Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
来源:互联网 发布:淘宝上能买到的黑科技 编辑:程序博客网 时间:2024/06/06 05:58
目录:
Recyclerview的一些个人理解与使用(一)adapter的简单封装
Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
Recyclerview的一些个人理解与使用(三)列表中的计时器
Recyclerview的一些个人理解与使用(四)在界面中实现侧边栏效果
Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
最近项目在集成IM,用的融云,由于需求的特殊性实现起来比较麻烦,花了一个的时间,差不多就要完成了,近两天也刚好闲了下来,自己想放松一下,也给大家也带来一个很轻松就能实现的功能,照例附上上一篇实现Recyclerview联动博客的网址:
http://blog.csdn.net/ljwztn/article/details/71209543
这个功能主要是为了解决某些复杂的Recyclerview整体绘制过慢的问题,试想如果一个界面需要很长时间的绘制才能加载出来,无疑是影响用户体验,通过Recyclerview的分段加载,我们让item依次绘制并展示到用户眼前,这样子的交互就比较由好了。因为这只是一个demo,我没有制造一个复杂的界面让它去加载,只是简单的实现了这个功能,大家可以根据自己项目的实际需求看是否需要使用。先上图
代码也很简单,使用 Timmer 类开始任务,在 handler 中更新 UI,因为adapter直接用的开始最简单的adapter,就不贴了,Activity代码如下;
/** * Created by ztn on 2017/6/8 * 分段加载Recyclerview */public class SubsectionRecyclerViewActivity extends BaseActivity { List<String> time; MainRecyclerViewAdapter mainRecyclerViewAdapter; SimpleDateFormat formatter; Timer timer; SubsectionRecyclerViewActivityHolder subsectionRecyclerViewActivityHolder; public static Intent newIntent(Context context) { return new Intent(context, SubsectionRecyclerViewActivity.class); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); subsectionRecyclerViewActivityHolder = new SubsectionRecyclerViewActivityHolder(this); formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.CHINA); time = new ArrayList<>(); time.add(formatter.format(System.currentTimeMillis())); mainRecyclerViewAdapter = new MainRecyclerViewAdapter(getContext(), time); subsectionRecyclerViewActivityHolder.recyclerView.setAdapter(mainRecyclerViewAdapter); timer = new Timer(); //0.5秒后执行任务,根据实际需求放在合适的位置,如加载的数据是网络数据,应该放在网络数据加载成功后执行 timer.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); } }, 500, 500); } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case 1: //加载20条数据,实际根据data的size定 if (time.size() < 20) { time.add(formatter.format(System.currentTimeMillis())); mainRecyclerViewAdapter.notifyItemChanged(time.size()); } else { //停止 timer.purge(); } break; case 2: timer.purge(); break; } return false; } });}
这里在handler中使用的 time 的 size,而不是任务执行的次数,因为有些界面绘制的时间可能不0.5秒还要长,可能导致空指针,直接用 time 的 size 就不会有这个问题了。
项目地址:
https://github.com/Liveinadream/RecyclerViewDemo#recyclerviewdemo
如有疑问大家可以添加 121606151 这个qq群@Crazy(即本人)即可,欢迎大家前来交流。
- Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
- Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
- Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
- Recyclerview的一些个人理解与使用(一)adapter的简单封装
- Recyclerview的一些个人理解与使用(二)实现一个简单的列表界面
- Recyclerview的一些个人理解与使用(三)列表中的计时器
- Recyclerview的一些个人理解与使用(四)在界面中实现侧边栏效果
- 谈谈RecyclerView的用法与添加Header的个人理解
- 理解RecyclerView的RecyclerView.ItemDecoration(一)
- 理解RecyclerView的RecyclerView.ItemDecoration(二)
- 简单理解Recyclerview的使用
- RecyclerView的使用及理解
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- RecyclerView的使用和与ListView的一些不同之处
- RecyclerView与CardView的使用
- RecyclerView的使用与解析
- RecyclerView与CardView的使用
- RecyclerView与CardView的使用
- docker部署Web项目(二)
- Halcon学习(四)图像处理中的两个坐标系
- 设屐师—创新捷径 小身材 大智慧
- maya单独显示线框和带贴图物体 优化视窗操作流畅度
- 深入浅出自动驾驶(一)-图像识别
- Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
- 338. Counting Bits
- 说说IO
- MySQL之索引学习笔记
- java学习 表达式集合输出
- ES6 yield使用
- UITableViewStyleGrouped 顶部空白
- java基础教程:运算符(8)
- 【LeetCode】4. Median of Two Sorted Arrays