Listview setSelection不生效问题
发布日期:2021-06-30 21:23:13
浏览次数:2
分类:技术文章
本文共 1658 字,大约阅读时间需要 5 分钟。
之前有个需求要实现这么一个功能,进入到一个有listview的页面,然后自动定位到某个item.listview有提供一个api就是setSelection来实现跳转到某个ITEM,开始以为这个实现挺简单的,但是尝试了之后发现直接setSelection没有起作用。后来查了下资料发现,这个方法只有在listvie完成数据加载之后调用才会生效。
网上大部分文章提供的解决方法是,把setSelection的调用放在postdelay里面延迟几百毫秒执行,这个的确有效,但是这个延迟的时间不好确定,有时候数据加载得很慢的情况下,这个方法还是会失效的。 这时我想到了一 listview有一个transcripmode的属性。这个属性设置为alwayscroll之后会自动滑到底部,这个属性每次都能滑动成功,我就想listview内部肯定有对这个做处理。然后就顺着这个属性看了下listview的源码,发现里面有个datachanged的属性。表示数据加载完成,数据加载完成之后会调用一个叫做handlechange的方法。if (dataChanged) { handleDataChanged(); }看到这,我就想到这个办法,自定义一个listview重写里面的handledatachanded方法,在里面加一个回调,然后将setSelection这个方法放在这个回调里面去执行。测试了一下,发现这个方法果然能保证setSelection百分百生效。下面附上自定义的listview代码。
public class HandleDataListView extends ListView { DataChangedListener dataChangedListener; public HandleDataListView(Context context) { super(context); } public HandleDataListView(Context context, AttributeSet attrs) { super(context, attrs); } public HandleDataListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void handleDataChanged() { super.handleDataChanged(); dataChangedListener.onSuccess(); } public void setDataChangedListener(DataChangedListener dataChangedListener) { this.dataChangedListener = dataChangedListener; } public interface DataChangedListener{ public void onSuccess(); }}setSelection放在回调中调用
listView.setDataChangedListener(new HandleDataListView.DataChangedListener() { @Override public void onSuccess() { listView.setSelection(1); });
转载地址:https://liwangjiang.blog.csdn.net/article/details/88133632 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月09日 01时34分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle 作业记录
2019-04-30
putty连接AWS配置(multimedia project)
2019-04-30
Hourglass Network 沙漏网络 (pose estimation姿态估计)
2019-04-30
OpenCV实战(二)——答题卡识别判卷
2019-04-30
目标检测神经网络的发展历程(52 个目标检测模型)
2019-04-30
Boundary loss 损失函数
2019-04-30
tensorflow使用tensorboard进行可视化
2019-04-30
凸优化 convex optimization
2019-04-30
数据库索引 & 为什么要对数据库建立索引 / 数据库建立索引为什么会加快查询速度
2019-04-30
IEEE与APA引用格式
2019-04-30
research gap
2019-04-30
pytorch训练cifar10数据集查看各个种类图片的准确率
2019-04-30
Python鼠标点击图片,获取点击点的像素坐标
2019-04-30
路径规划(一) —— 环境描述(Grid Map & Feature Map) & 全局路径规划(最优路径规划(Dijkstra&A*star) & 概率路径规划(PRM&RRT))
2019-04-30
RRT算法(快速拓展随机树)的Python实现
2019-04-30