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

}

}

相关内容