Android ListView上下选择,定位

Android ListView上下选择,定位

最近在做一个项目,用到遥控器。其中有一个需求是遥控器选择一个列表的内容,如果ListView可见内容为5个,遥控往下选择的时候要选择到第五个内容才需要往上扯,同理往上选择的时候到可见的第一个的时候内容才往下更新。Listview定位有两个方法:
ListView.setSelection(int position)
ListView.setSelectionFromTop(int position, int y);

开始我直接使用ListView.setSelection(int position),发现无论position如何变化,选中的位置都是ListView的最顶一个Item。

后来想到的是smoothScrollToPosition(),要是不设置setSelection的情况下Adapter的notifyDataSetChanged后显示又去回到第一个Item。设置完选中内容后notifyDataSetChanged()再smoothScrollToPosition()就会出现UI跳跃太明显。

最后是选择使用ListView.setSelectionFromTop(int position, int y)。
我的做法如下,如果有朋友有更好的方法指导下,

int itemHeight = 0;
int distance = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode==87){
        if (distance>0) {
            distance--;
        }
        mBaseListAdapter.onUpTap();
        listView.setSelectionFromTop(mBaseListAdapter.getSelectItem(),distance*itemHeight);
        return true;
    }
    if (keyCode==88){
        if (distance<listView.getChildCount()-1) {
            distance++;
        }
        mBaseListAdapter.onDownTap();
        listView.setSelectionFromTop(mBaseListAdapter.getSelectItem(),distance*itemHeight);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

每天积累一点点,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值