论坛首页 移动开发技术论坛

ListView 中 item 循环显示

浏览 6852 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-03  

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!

 

   发表时间:2010-02-10  
什么意思的 
0 请登录后投票
   发表时间:2010-02-10  
wafj1984 写道
什么意思的 

如果没有这些代码的话
当item是最后一个 就不可以继续往下翻了 同理 当item是第一个 也不可以继续往上翻了
0 请登录后投票
   发表时间:2010-02-21  
这个很好,目前自带的一些软件都没有这个功能,不太爽
0 请登录后投票
   发表时间:2010-03-04  
如果用户是触摸,就是往下拖的惯性动作
你怎么捕捉呢?
0 请登录后投票
   发表时间:2010-03-05  
leelight 写道
如果用户是触摸,就是往下拖的惯性动作
你怎么捕捉呢?

可以用onFlipper() 捕捉啊 不过我因为是试验这个功能 所以没支持 但是难度也不大
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics