歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android ListView分頁顯示

為了能更直接的對應主題,下面代碼不完整,所以請不要直接復制粘貼到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) {

}

}

Copyright © Linux教程網 All Rights Reserved