基本学 Android 的都会遇到这个问题吧——“Android 的 ListView 如何设置默认焦点?”
在网上找到了很多方法都行不通:
1.setSelection(0)
mListView.setSelection(0);
这个是最大众的,大家都知道的方法,可是在初始化的时候并不管用。
2.异步 setSelection(0)
mListView.post(new Runnable() {
@Override
public void run() {
mListView.setSelection(0);
}
});
解释说因为 setAdapter() 后刷新ListView是异步的,必须在ListView显示出来后再去进行设置默认焦点。
好有道理,然而并不起作用。
3.setChoiceMode(List.CHOICE_MDE_SINGLE) + setItemChecked(0,true);(原先这个方法叫setItemSelected(x, x))
mListView.setChoiceMode(List.CHOICE_MDE_SINGLE);
mListView.setItemChecked(0,true);
并没有起作用。
百度了一下,其实这个是设置 ListView 的单选/多选模式,还有如下方法:
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//开启多选模式
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//开启单选模式
listview.setChoiceMode(ListView.CHOICE_MODE_NONE);//默认模式
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);//没用过,不知道用来干嘛的
而它用listview.setItemChecked(position, boolean);
来设置某行的状态
4.自定义 Adapter 。
在自定义 Adapter 里加一个属性curPosition<