关于Recyclerview的一些常见问题
来源:互联网 发布:淘宝破零方法 编辑:程序博客网 时间:2024/05/19 13:23
在android开发中刷新控件必不可少,关于刷新目前常用的用listview,recyclerview。今天重点讲后者,因为recyclerview种种优势,很多开发者纷纷投入使用rv。
但是我要说的是rv虽然比lv好用但是也有很多自身的bug导致开发者在开发过程中头疼不已。
情况一:服务端响应成功但响应实体是没有的,这个时候rv就抽风了,具体异常不好意思给忘了(此处省略),具体解决方式就是在你自定义的rv中你会给rv设置这样一段话
XLayoutManager gridLayoutManager = new XLayoutManager(context, 1);
setLayoutManager(gridLayoutManager);
这里的XLayoutManager 我是继承GridLayoutManager,当然如果你是继承LinearLayout的话也是一样,只是在内部稍作调整
public class XLayoutManager extends GridLayoutManager {
public XLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes);}public XLayoutManager(Context context, int spanCount) { super(context, spanCount);}public XLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) { super(context, spanCount, orientation, reverseLayout);}@Overridepublic void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { try { super.onLayoutChildren(recycler, state); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); }}
}
最核心的就是要重写onLayoutChildren这个方法,原因就是当rv进行填充数据时发现数据源是null,造成adapter报IndexOutOfBoundsException异常,重写这个方法也就是在代码中把这个异常捕获到但是并不影响程序的执行这点和IO操作中EOFException是一样的,EOFException是在读取资源时找不到资源标记,导致读取结束之后无法返回 -1这个值,不扯淡了,下一个话题
情况2:rv频繁刷新报java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled
出现这种情况原因就是rv频繁数据操作而adapter刷新又不及时导致data与rv脱离
解决方式:数据源操作之后必须调用adapter.notifyDataSetChanged();数据源操作要和adapter刷新保持一致
最后关于rv的坑肯定不止这些,小伙伴们加油
- 关于Recyclerview的一些常见问题
- 关于RecyclerView的一些概念
- 关于RecyclerView的一些笔记
- 关于锁的一些常见问题
- 关于单链表的一些常见问题
- 关于RecyclerView 的一些想法笔记
- 关于fso( FileSystemObject )的一些常见问题
- 关于fso( FileSystemObject )的一些常见问题
- 关于EJB的一些常见问题(一)
- 关于EJB的一些常见问题(一)
- 关于Installshield里一些常见问题的解答
- 【关于外键约束的一些常见问题】
- 关于站立会议的一些常见问题
- 收集关于angular的一些常见问题 总结
- Recyclerview 常见问题的 Demo 解决办法
- 关于RecyclerView的Adapter的notifyItemInserted()的一些分析
- 关于使用RecyclerView遇到的一些问题集合
- recyclerview的一些用法
- 使用Notepad++的工程管理视图
- Swift:KeyPath
- Android开发常用开源框架(架构程序)
- C语言基础三(数组)
- 虽然是浅显,但这道理却不那么易懂...
- 关于Recyclerview的一些常见问题
- 加油干 golang入坑系列
- DOM对象和js对象以及jQuery对象的区别
- 经典SQL语句
- 第1章 简介
- 2、最大子序列和问题的四个算法
- 用notepad++打造自己的IDE开发环境
- 十、VueJs 填坑日记之在项目中使用Amaze UI
- linux下zookeeper的安装配置