Android --ListView分页
2015-09-14 11:36
543 查看
参考博客:Android ListView分页加载(服务端+android端)Demo
监听OnScrollListener事件
后台线程请求数据
监听OnScrollListener事件
class OnListScrollListener implements AbsListView.OnScrollListener{ @Override public void onScrollStateChanged(AbsListView view, int scrollState) { /** * 当分页操作is_divPage为true时、滑动停止时、且pageNo<=4(这里因为服务端有4页数据)时,加载更多数据 */ if (is_divPage && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && mPageNo <=4) { // Toast.makeText(getActivity(), "正在获取更多数据...",Toast.LENGTH_SHORT).show(); new MyTask().execute(EMP_PATH+mPageNo); }else if (mPageNo >4) { /** * 如果pageNo>4则表示,服务端没有更多的数据可供加载了。 */ Toast.makeText(getActivity(), "没有更多数据啦...", Toast.LENGTH_SHORT).show(); } } /** * 当:第一个可见的item(firstVisibleItem)+可见的item的个数(visibleItemCount)=所有的item总数的时候, * is_divPage变为TRUE,这个时候才会加载数据。 */ @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { is_divPage = (firstVisibleItem + visibleItemCount == totalItemCount); } }
后台线程请求数据
/** * MyTask继承线程池AsyncTask用来网络数据请求、json解析、数据更新等操作。 */ class MyTask extends AsyncTask<String, Void, String> { /** * 数据请求前显示dialog。 */ @Override protected void onPreExecute() { super.onPreExecute(); dialog.show(); } /** * 在doInBackground方法中,做一些诸如网络请求等耗时操作。 */ @Override protected String doInBackground(String... params) { //return RequestData(); getHistoryData(); return "1"; } /** * 在该方法中,主要进行一些数据的处理,更新。 */ @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (result != null) { // 如果获取的result数据不为空,那么对其进行JSON解析。并显示在手机屏幕上。 mdataList.addAll(mperDataList); mdataAdapter.bindData(mdataList); /** * 当pageNo等于1的时候才会setAdapter,以后不会再设置,直接notifyDataSetChanged,进行数据更新 * ,这样可避免每次加载更多数据的时候,都会重新回到第一页。 */ // if (mPageNo == 1) { // mListView.setAdapter(mdataAdapter); // } mdataAdapter.notifyDataSetChanged(); mPageNo++; } else if (result == null) { Toast.makeText(getActivity(), "请求数据失败...", Toast.LENGTH_LONG) .show(); } dialog.dismiss(); } }
相关文章推荐
- android设备上实现摇一摇
- 谷歌官方Android最新滑动选项导航卡SlidingTabLayout和SlidingTabStrip
- android 自定义组合控件
- android studio打包发布以及生成jar,aar包
- Android 禁止初始时ScrollView自动滚动到底部
- Android 判断程序是不是第一次运行
- android studio注意要点及常见错误
- android弹出软键盘时,editText被遮挡的问题
- 浅析Android中的消息机制
- Android Parcelable对象生成:ParcelableGenerator
- android进程间通信:使用AIDL
- Android 与服务器的通信方式
- 如何完全退出android应用程序
- android不透明度16进制值
- Android Studio系列教程六--Gradle多渠道打包
- Android 操作系统的内存回收机制
- Android Activity 销毁后线程会不会被GC回收?
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- android格式化手机号的功能
- android spinner(下拉选项卡)的使用