Android ListView默认选中某一项

来源:互联网 发布:centos的vmdk文件下载 编辑:程序博客网 时间:2024/05/01 02:06

很多时候,在listview加载数据之后,我们希望默认选中第一项,然后我们在setAdapter之后写上如下代码:

listview.getChildAt(0).setBackgroundResource(R.color.white);
发现程序崩溃:NullPointerException,事实上,setAdapter() 是异步的 ,调用了这个方法之后 ListView 的 item 并没有立马创建,而是在下一轮消息处理时才创建。

解决办法:使用 post() 提交一个 Runnable() 对象,在 Runnable() 内部来做默认选中这种初始化动作

<span style="font-size:18px;"> //默认选择第一项        listListview.post(new Runnable() {            @Override            public void run() {                listListview.getChildAt(0).setBackgroundResource(R.color.white);            }        });</span>

假如listView对点击事件不响应,我们可以通过对ItemLayout的根控件设置其android:descendantFocusability=”blocksDescendant”即可,这样ItemLayout就屏蔽了所有子控件获取Focus的权限,不需要针对ItemLayout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了

3 2
原创粉丝点击