数据分页策略:

<1>:用多少查多少

<2>:全部查询出来,再进行分页处理

数据分页的有关算法:

(1):起始索引值 = (当前页-1)*每页显示的记录数

(2):结束索引值 = 当前页*每页显示的记录数 ; 如果结束索引值大于记录总数则结束索引值应该为记录总数。

实现效果图:

后台业务逻辑:

package com.hsj.example.listviewpaginationdemo01;import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private ListView listView_names;private ArrayAdapter<String> adapter;/*** 当前页号*/private int pageNo=1;/*** 每页显示的记录数*/private int pageSize=20;/*** 总数据源*/private List<String> data=new ArrayList<>();/*** 最后一个可见的条目*/private int lastVisibleItem;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.listView_names= (ListView) this.findViewById(R.id.listView_names);View footerView=View.inflate(this,R.layout.footer_view,null);this.listView_names.addFooterView(footerView);this.adapter=this.getAdapter();this.listView_names.setAdapter(adapter);//注册滚动监听器this.listView_names.setOnScrollListener(new AbsListView.OnScrollListener() {/*** 当滚动状态发生变化时自动调用的方法** @param view 事件源(ListView)* @param scrollState*      SCROLL_STATE_IDLE=0:当前 ListView处于空闲状态时的值*                      空闲状态有两种情况:*                          A:一直处于空闲状态*                          B:由滚动状态回归到空闲状态**      SCROLL_STATE_TOUCH_SCROLL=1:触摸滚动状态(用户的手指在屏幕上移动并且手指没有离开屏幕时的状态)*      SCROLL_STATE_FLING=2:用户触屏滚动后执行了一个快速滑动动作时对应的状态*/@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {/*isBottom=true:滚动到页面底部了scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE:当前 ListView 回归到空闲状态了*/if(lastVisibleItem==adapter.getCount()  && scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){pageNo++;loadNextPageData();}System.out.println("==onScrollStateChanged(AbsListView view="+view+", int scrollState="+scrollState+")===");}/*** 当滚动条目时自动调用的方法,当然初始显示时也会调用* @param view 事件源(ListView)* @param firstVisibleItem 第一个可见条目的索引值* @param visibleItemCount 当前手机屏幕上显示的记录条数* @param totalItemCount  数据源中记录的总数*/@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {//-1:是为了减去页脚的索引值lastVisibleItem=firstVisibleItem+visibleItemCount-1;System.out.println("===onScroll(AbsListView view="+view+", int firstVisibleItem="+firstVisibleItem+", int visibleItemCount="+visibleItemCount+", int totalItemCount="+totalItemCount+")====");}});}/*** 完成加载下一页的操作*/private void loadNextPageData() {new Thread(new Runnable() {@Overridepublic void run() {//做耗时操作SystemClock.sleep(3000);List<String> subList=getData();//改变数据源data.addAll(subList);runOnUiThread(new Runnable() {@Overridepublic void run() {//此处更新 UIadapter.notifyDataSetChanged();}});}}).start();System.out.println("==加载下一页===");}private ArrayAdapter<String> getAdapter() {this.data.addAll(this.getData());adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);return adapter;}private List<String> getData() {List<String> subList=new ArrayList<>();for(int i=(pageNo-1)*pageSize;i<pageNo*pageSize;i++){subList.add("小丽"+i);}return subList;}
}

前台代码省略。。。

从网络上加载数据(分页效果):

android 之ListView分页效果以及从网络上加载数据一系列的综合运用相关推荐

  1. 阿里云视频点播加密视频播放报:网络错误加载数据失败(fragLoadError)

    问题描述: 1.首先视频id正确 2.视频播放凭证生成正确(未失效) 3.但是网页点播出现错误如下图 解决方案: 阿里云存储权限问题! 设为公共问题解决,可点播加密视频!

  2. [转]ListView滚动到底部自动加载数据

    转自:http://blog.csdn.net/shineflowers/article/details/41744241 在Android中有很多时候会选择用ListView加载数据,有的是分批加载 ...

  3. 微信小程序-如何分页加载数据

    小程序通过数据库读取数据一次最多读取20条,云函数一次最多读取100条,所以如果我们要读取更多的数据就要借助分页加载,通过分次的加载数据,然后将每次获取到的数据拼接起来,就可以在页面显示更多的数据. ...

  4. Android 实现ListView圆角效果

     今天,简单讲讲如何实现使用  ListView显示圆角. 其实代码很多都可以解决,这是在网上搜索的一个解决的代码. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看 ...

  5. Android中ListView分页加载数据

    熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容 ...

  6. listView分批和分页加载数据

    在Android应用程序中,有时候会向listView中加载很多数据,向listView中加载数据是一个耗时的过程,加载过多的数据用户停留在listView上,一直等待,给用户的体验特别不好,比如向服 ...

  7. Android Listview滑动时不加载数据,停下来时加载数据,让App更优

    转载:http://blog.csdn.net/yy1300326388/article/details/45153813 数据源配置(Adapter) package com.zhengsongla ...

  8. android listview动态加载数据,ListView动态加载数据

    当listview需要加载的数据过多时,若一次性载入则速度会相当缓慢,影响用户体验,这时候就需要动态加载数据,即每次载入固定长度的数据,android market的listview就是采用这种方式, ...

  9. Android GridView横向滚动,分页加载数据

    转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/51007348 始终觉得讲ui效果要先放上效果图,要不让其他人好不容易看完了, ...

最新文章

  1. linux命令用tar czvf .tar.gz好用的
  2. Python开发编码规范(转)
  3. 厉害的组件_企业级React UI组件库——React Suite
  4. 苹果笔记本怎么找文件夹_求解答mac怎么找文件路径
  5. mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
  6. 聊城高级财经计算机应用升学,聊城高级财经职业学校成功承办省级职业技能大赛赛项...
  7. 通才和专家:如何选择
  8. Web Service 缓存
  9. struts入门超详细
  10. 欢迎加入唐山.NET俱乐部
  11. Selenium 屏幕截图
  12. CSS小技巧--文字对齐
  13. 软件需求分析用例图 实例简述
  14. 高阶整车域控制器的详细设计方案
  15. 如何开启计算机cpu虚拟化,电脑开启虚拟化设置的方法 如何开启虚拟化设置
  16. win7 共享计算机 网络密码怎么设置,Win7无线网络共享设置方法丨Win7无线网络共享设置方法图解...
  17. 「CTS2019」氪金手游
  18. 电脑桌面壁纸更换后不一会就变成黑屏
  19. 《SQL经典实例》六——字符串处理
  20. 基于JAVA公立医院绩效考核系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. LINUX 使用tcgetattr函数与tcsetattr函数控制终端一
  2. 老司机又开车(来不及解释,快上!)之秒懂单片机指针!
  3. 更新电脑游戏安装合集,600+单机游戏,单机电脑游戏合集共约4T
  4. 11.Verilog中如何避免Latch
  5. 在CentOS上禁用IPv6
  6. 算法与数据结构之二分查找
  7. 字符串匹配KMP算法中Next[]数组和Nextval[]数组求法
  8. 如何利用office绘制施工进度计划横道图?
  9. Visual Studio使用技巧,创建自己的代码片段
  10. Debian中编译内核