ListView 分页加载的更新实例介绍

来源:爱站网时间:2018-04-15编辑:网友分享
 ListView是android中最常用的控件之一,以下是小编整理的一些ListView 分页加载的更新实例介绍,感兴趣的朋友跟小编一起来了解一下吧!

  ListView是android中最常用的控件之一,以下是小编整理的一些ListView 分页加载的更新实例介绍,感兴趣的朋友跟小编一起来了解一下吧!

  在实际运用中往往会遇到一次性加载全部数据过多,需要分页加载增加程序运行效率!

  本demo是将更新的监听放在listview的foot中,通过底部按钮点击触发或者通过滑动事件监听,当滑动到列表最底部的时候触发。

  有图有真像:

  列表初始状态

  触发加载

  加载后

  部分代码:

  MainActivity

  复制代码 代码如下:

  private void initActivity() {

  // TODO Auto-generated method stub

  loadMoreView = getLayoutInflater().inflate(R.layout.loadmore, null);

  loadmore_btn = (Button) loadMoreView.findViewById(R.id.loadmore_btn);

  loadmore_btn.setOnClickListener(new OnClickListener() {

  @Override

  public void onClick(View v) {

  // TODO Auto-generated method stub

  doUpdate();

  }

  });

  listView = (ListView) findViewById(R.id.listView);

  listView.addFooterView(loadMoreView);

  initAdapter();

  listView.setAdapter(adapter);

  listView.setOnScrollListener(new OnScrollListener() {

  @Override

  public void onScrollStateChanged(AbsListView view, int scrollState) {

  // TODO Auto-generated method stub

  int itemsLastIndex = adapter.getCount() - 1;

  int lastIndex = itemsLastIndex + 1;

  if (scrollState == OnScrollListener.SCROLL_STATE_IDLE

  && visibleLast == lastIndex) {

  // 可在这添加滑到列表底的时候异步自动加载

  // doUpdate();

  }

  }

  @Override

  public void onScroll(AbsListView view, int firstVisibleItem,

  int visibleItemCount, int totalItemCount) {

  // TODO Auto-generated method stub

  visibleCount = visibleItemCount;

  visibleLast = firstVisibleItem + visibleItemCount - 1;

  }

  });

  }

  protected void doUpdate() {

  // TODO Auto-generated method stub

  loadmore_btn.setText("loading ...");

  handler.postDelayed(new Runnable() {

  @Override

  public void run() {

  // TODO Auto-generated method stub

  loadData();

  adapter.notifyDataSetChanged();// 通知adapter数据变化

  listView.setSelection(visibleLast - visibleCount + 1);

  loadmore_btn.setText("Load More");

  }

  }, 2000);

  }

  private void loadData() {

  // TODO Auto-generated method stub

  int count = adapter.getCount();

  for (int i = count; i

  adapter.addItem(String.valueOf(i + 1));

  }

  }

  private void initAdapter() {

  // TODO Auto-generated method stub

  List items = new ArrayList();

  for (int i = 0; i

  items.add(String.valueOf(i + 1));

  }

  adapter = new ListAdapter(this, items);

  }

  @Override

  public boolean onCreateOptionsMenu(Menu menu) {

  // Inflate the menu; this adds items to the action bar if it is present.

  getMenuInflater().inflate(R.menu.activity_main, menu);

  return true;

  }

  ListAdapter

  复制代码 代码如下:

  public ListAdapter(Context context, List items) {

  this.items = items;

  this.inflater = (LayoutInflater) context

  .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  }

  @Override

  public int getCount() {

  // TODO Auto-generated method stub

  return items.size();

  }

  @Override

  public Object getItem(int position) {

  // TODO Auto-generated method stub

  return items.get(position);

  }

  @Override

  public long getItemId(int position) {

  // TODO Auto-generated method stub

  return position;

  }

  @Override

  public View getView(int position, View convertView, ViewGroup parent) {

  // TODO Auto-generated method stub

  if (convertView == null) {

  convertView = inflater.inflate(R.layout.list_item, null);

  }

  TextView textView = (TextView) convertView

  .findViewById(R.id.list_item_text);

  textView.setText(items.get(position));

  return convertView;

  }

  /**

  * 添加列表项

  * @param item

  */

  public void addItem(String item){

  items.add(item);

  }

  提醒一下:要下载android-support-v4.jar 这个第三方的jar包哦! 这里就不提供下载了!

       以上所述就是ListView 分页加载的更新实例介绍的介绍,希望大家能够喜欢,更多内容请继续关注爱站技术频道网站!

上一篇:Andorid TextView字幕效果以及代码介绍

下一篇:android:descendantFocusability的方法相关介绍

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载