966
技術社區[雲棲]
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