ListView 中 item 循环显示
ListView 中 item 循环显示
?
?
[功能]
何谓循环显示 即
1. 此刻的 item 为最后一个 当继续往下翻的话 就会回到第一个
2. 而此刻的 item 是第一个 当继续往上翻 就会变为最后一个
?
?
[原理]
1. 一个 int ID? 用于保存 选中的 item
2. 通过 onKeyDown() 捕捉ACTION 并判断是 向上 还是 向下
3. 把 二者 进行综合判断 然后设定 焦点
?
?
[代码 步骤]
1. 定义 int ID 并记录 选中的 item id
int ID = 0;this.getListView().setOnItemSelectedListener(new OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubID = arg2;}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub} });
?
?
2. 通过 onKeyDown 捕捉 keyCode? 假如是自己关心的按键 再根据此刻的 ID? 进行相应的设定
public boolean onKeyDown(int keyCode, KeyEvent msg){ if(keyCode == msg.KEYCODE_DPAD_DOWN){ if(ID == data.length - 1 ){ this.getListView().setSelection(0); } } else if(keyCode == msg.KEYCODE_DPAD_UP){ if(ID == 0){ this.getListView().setSelection(data.length - 1); } } //super.onKeyDown(keyCode, msg);return false; }
?
?
?
done!
?
1 楼 sunburst 2010-02-04 不错,挺好的,学习到了,感谢楼主 2 楼 wafj1984 2010-02-10 什么意思的 3 楼 gryphone 2010-02-10 wafj1984 写道什么意思的如果没有这些代码的话
当item是最后一个 就不可以继续往下翻了 同理 当item是第一个 也不可以继续往上翻了 4 楼 superhanliu 2010-02-21 这个很好,目前自带的一些软件都没有这个功能,不太爽 5 楼 hhhhhh1972 2010-02-25 不错,谢谢 6 楼 leelight 2010-03-04 如果用户是触摸,就是往下拖的惯性动作
你怎么捕捉呢? 7 楼 gryphone 2010-03-05 leelight 写道如果用户是触摸,就是往下拖的惯性动作
你怎么捕捉呢?
可以用onFlipper() 捕捉啊 不过我因为是试验这个功能 所以没支持 但是难度也不大 8 楼 leon19870907 2012-05-14 这种做法考虑不够周全 要是我从第一个移动到最上面 马上就跳到第一个了 怎么办?