閱讀966 返回首頁    go 技術社區[雲棲]


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) {

}

}


最後更新:2017-04-02 22:15:49

  上一篇:go 國家寬帶戰略或明年3月出台
  下一篇:go go language --- techory diary 15 Dec