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; } }