Android使用反射机制设置ListView的默认焦点

基本学 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<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值