為了能更直接的對應主題,下面代碼不完整,所以請不要直接復制粘貼到IDE中,重點代碼加粗顯示,代碼中有注釋.
public class MyActivity extends Activity implements OnScrollListener {
// 參數
/** 數據源 */
private List<Joke> data;
/** 初始顯示的頁數 */
private int pageNum = 1;
/** 每一次顯示多少個 */
private static final int pageCount = 20;
/** MyAdapter引用 */
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隱藏標題
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.listing);
}
/**
* 自定義ListView的Adapter類
*
* @author Lion
*
*/
class MyAdapter extends BaseAdapter {
// 數據源
private List<Joke> data;
public MyAdapter(List<Joke> data) {
super();
this.data = data;
}
@Override
public int getCount() {
// 返回該顯示的數據個數
// pageCount 一頁顯示多少個
// pageNum 第幾頁
return pageCount * pageNum;
}
@Override
public Object getItem(int position) {
return data != null ? data.get(position) : null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return convertView;
}
}
/**
* OnScrollListener接口實現方法
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 當不滾動時
if (scrollState == SCROLL_STATE_IDLE) {
// 判斷到底部滾動
if (view.getLastVisiblePosition() == (view.getCount() - 1)) {
if (data.size() - pageNum * pageCount <= pageCount) {
// 這種情況就是末尾了,也就是集合(數據源)裡面沒有數據了
Toast.makeText(getApplicationContext(), "已至末尾...",
Toast.LENGTH_SHORT).show();
} else {
// ��示頁數+1
pageNum++;
// 刷新ListView
adapter.notifyDataSetChanged();
}
}
}
}
/**
* OnScrollListener接口實現方法
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
}