为了能更直接的对应主题,下面代码不完整,所以请不要直接复制粘贴到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) { } }
时间: 2024-10-27 09:59:35