ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)

上传人:豆浆 文档编号:11121835 上传时间:2017-10-12 格式:DOCX 页数:16 大小:117.80KB
返回 下载 相关 举报
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)_第1页
第1页 / 共16页
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)_第2页
第2页 / 共16页
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)_第3页
第3页 / 共16页
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)_第4页
第4页 / 共16页
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)》由会员分享,可在线阅读,更多相关《ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)(16页珍藏版)》请在金锄头文库上搜索。

1、ListView 动态加载数据分页(使用 Handler+线程和 AsyncTask 两种方法)在 android 开发中,经常需要使用数据分页,比如要实现一个新闻列表的显示,或者博文列表的显示,不可能第一次加载就展示出全部,这就需要使用分页的方法来加载数据,在 android 中 Handler 经常用来在耗时的工作中,它接收子线程发送的数据,并使用数据配合更新 UI,AsyncTask 是在一个线程中执行耗时操作然后把结果传给 UI线程,不需要你亲自去管理线程和句柄。一、使用 Handler+线程方法1、基础知识Handler 在 android 系统中,主要负责发送和接收消息,它的用途主

2、要有以下两种:(1)按照计划来处理一个消息( sendMessage(Message)方法)或者执行某个 runnable 实例(post(Runnable)方法)(2)把其他的线程对象放入消息队列中,避免线程冲突。消息的发送通过 post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), sendEmptyMessage(int),sendMessage(Message), sendMessageAtTime(Message, long)和 sendMessageDelayed(Message, long)

3、 方法完成。对于 postXXX方法通过 Runnable 对象给消息队列,并在消息队列到达后被调用。对于 sendMessageXXX 方法,则传递一个包含 message 对象,该对象可以被 Handler 类的 handlerMessage(Message)方法处理。2、主要代码1 public class HandlerDemo extends Activity implements OnScrollListener 2 3 private ListView mListView;4 LinearLayout loadingLayout;5 private Thread mThread;

4、6 private ListViewAdapter adapter;7 8 private int startIndex = 1;/ 从第 1 条开始9 private int size = 10;/ 每次下载十条数据10 private List newsList;11 List data ;12 13 /*14 * 设置布局显示属性15 */16 private LayoutParams mLayoutParams = new LayoutParams(17 LinearLayout.LayoutParams.WRAP_CONTENT,18 LinearLayout.LayoutParam

5、s.WRAP_CONTENT);19 20 private LayoutParams ffLayoutParams = new LayoutParams(21 LinearLayout.LayoutParams.FILL_PARENT,22 LinearLayout.LayoutParams.FILL_PARENT);23 24 private ProgressBar progressBar;25 26 Override27 protected void onCreate(Bundle savedInstanceState) 28 / TODO Auto-generated method st

6、ub29 super.onCreate(savedInstanceState);30 setContentView(R.layout.news_main);31 data=new ArrayList();32 addView();33 34 35 private void addView() 36 if (startIndex = 1) 37 newsList = new ArrayList();38 newsList = getNewsList();39 40 getdata(newsList);41 LinearLayout layout = new LinearLayout(this);

7、42 layout.setOrientation(LinearLayout.HORIZONTAL);43 progressBar = new ProgressBar(this);44 layout.addView(progressBar, mLayoutParams); 45 TextView textView = new TextView(this);46 textView.setText(加载中.);47 textView.setGravity(Gravity.CENTER_VERTICAL);48 layout.addView(textView, ffLayoutParams);49 l

8、ayout.setGravity(Gravity.CENTER);50 loadingLayout = new LinearLayout(this);51 loadingLayout.addView(layout, mLayoutParams);52 loadingLayout.setGravity(Gravity.CENTER);53 54 / 得到一个 ListView 用来显示条目55 mListView = (ListView) findViewById(R.id.listView);56 mListView.addFooterView(loadingLayout);57 adapte

9、r = new ListViewAdapter();58 mListView.setAdapter(adapter);59 mListView.setOnScrollListener(this);60 mListView.setTextFilterEnabled(true);61 62 63 Override64 public void onScroll(AbsListView view, int firstVisibleItem,65 int visibleItemCount, int totalItemCount) 66 / TODO Auto-generated method stub6

10、7 if (firstVisibleItem + visibleItemCount = totalItemCount) 68 if (mThread = null | !mThread.isAlive() 69 mThread = new Thread() 70 71 Override72 public void run() 73 newsList = new ArrayList();74 newsList = getNewsList();75 getdata(newsList);76 Message msg = new Message();77 msg.what = 1;78 handler

11、.sendMessage(msg);79 80 ;81 mThread.run();82 83 84 85 86 Handler handler = new Handler() 87 88 Override89 public void handleMessage(Message msg) 90 / TODO Auto-generated method stub91 if (msg.what = 1) 92 startIndex = startIndex + size;93 Log.v(startindex, startIndex + ); 94 mListView.removeFooterVi

12、ew(loadingLayout);95 mThread.stop();96 adapter.count += size;97 adapter.notifyDataSetChanged();98 return;99 100 101 ;102 103 class ListViewAdapter extends BaseAdapter 104 int count = 10;105 106 Override107 public int getCount() 108 / TODO Auto-generated method stub109 return count;110 111 112 Override113 public Object getItem(int position) 114 / TODO Auto-generated method stub115 return position;116 117 118 Override119 public long getItemId(int position) 120 / TODO Auto-generated method stub121 return position;122 123 124 Override125 public View

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号