`
hilary3113
  • 浏览: 262484 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

ListView OnScrollListener详解(滑屏分页显示数据)

阅读更多

 

 

package com.action;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.AbsListView.OnScrollListener;

public class ListViewActivity extends Activity {
	private ListView lv;
	private List<String> list;
	private int lastItem;
	private int listSize;
	private ListAdapter adapter;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv = (ListView) findViewById(R.id.lv);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getData());
        lv.setAdapter(adapter);
        lv.setOnScrollListener(new OnScrollListener() {
			
			@Override
			public void onScrollStateChanged(AbsListView paramAbsListView, int paramInt) {
				//当屏幕停止滚动时为0;当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1;
				//由于用户的操作,屏幕产生惯性滑动时为2
				System.out.println("***lastItem:"+lastItem);
				System.out.println("***listSize:"+listSize);
				if(lastItem == listSize){
					System.out.println("**************");
					//数据全部显示出来时运行此处代码,如果要实现分页功能,在这里加载下一页的数据
				}
				
			}
			
			@Override
			public void onScroll(AbsListView paramAbsListView, int firstVisibleItem,
					int visibleItemCount, int totalItemCount) {
//				//	firstVisibleItem表示在现时屏幕第一个ListItem(部分显示的ListItem也算)
//				//	在整个ListView的位置(下标从0开始) 
//				System.out.println("***firstParamInt:"+firstVisibleItem);
//				//	visibleItemCount表示在现时屏幕可以见到的ListItem(部分显示的ListItem也算)总数
//				System.out.println("***visibleItemCount:"+visibleItemCount);
//				//	totalItemCount表示ListView的ListItem总数
//				System.out.println("***totalItemCount:"+totalItemCount);
				//	listView.getLastVisiblePosition()表示在现时屏幕最后一个ListItem(最后ListItem要完全
				//	显示出来才算)在整个ListView的位置(下标从0开始)
//				System.out.println("****"+String.valueOf(lv.getLastVisiblePosition()));
				lastItem = lv.getLastVisiblePosition();
			}
		});
    }
    private List<String> getData(){
    	int i;
    	list = new ArrayList<String>();
    	for(i=1; i<10; i++){
    		list.add("ListView"+i);
    	}
    	listSize = list.size()-1;
    	return list;
    }
}

 如果还有什么不懂的,见意去看下源码。

分享到:
评论
6 楼 hilary3113 2012-09-02  
kondoh 写道
呵呵,看参数名 paramAbsListView,就知道是反编译来的

看来你很细心
5 楼 kondoh 2012-08-30  
呵呵,看参数名 paramAbsListView,就知道是反编译来的
4 楼 ariel791331313 2012-08-08  
恩,不错哦
3 楼 hilary3113 2012-01-10  
wufeng_135 写道
          

有什么不足可以说出来,别用新号搞破坏呀
2 楼 wufeng_135 2012-01-06  
          
1 楼 wufeng_135 2012-01-06  
id

相关推荐

Global site tag (gtag.js) - Google Analytics