ListView 中 item 循环展示
ListView 中 item 循环显示
如果没有这些代码的话
当item是最后一个 就不可以继续往下翻了 同理 当item是第一个 也不可以继续往上翻了
可以用onFlipper() 捕捉啊 不过我因为是试验这个功能 所以没支持 但是难度也不大
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(){ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub ID = arg2; } @Override public 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
这种做法考虑不够周全 要是我从第一个移动到最上面 马上就跳到第一个了 怎么办?