EasyRecyclerView
EasyRecyclerView copied to clipboard
关于代码使用发现问题,共7点
我们这边的项目目前用你的这个框架已经有一年多了,发现了一些问题: 1.当数据不足的时候,会走两遍setMore方法 2.当瀑布流显示大小规格不同的图片,上拉加载更多有问题 3.当一个页面有自定义头部【包含轮播图或者其他控件】,还有list数据的时候。如果设置加载中状态,则是整个页面显示加载中。而我们的产品要求,只要局部页面刷新。 4.如果想要实现那种复杂的页面【例如,不同类型list,类似商城那种】,目前做法是在继承你封装的adapter处理不同类型item的布局,将不同类型实体类汇总到一个实体类。但是随着后来ui更改,以及添加或删除功能,而且RecyclerArrayAdapter<实体类>,由于不同item的返回实体类字段不一样,而这个时候便很难优雅处理多种类型。所以我想在你的源代码基础上做些更改,和同事在你的代码基础上封装库,不知道是否可以? 5.在swipe包中的SwipeRefreshLayout类,可以直接使用谷歌官方的SwipeRefreshLayout类,这样swipe包中那几个类都可以去掉。不得不说,在之前官方没有发布刷新控件时,就能够写出该自定义控件。水平还是相当高呀,大神,佩服!! 6.我安装阿里编码规约插件后,黄色警告和提示部分实在太多 7.在BaseViewHolder中为了减少findviewbyid,可以复用,比如:
// SparseArray 比 HashMap 更省内存,在某些条件下性能更好,只能存储 key 为 int 类型的数据,
// 用来存放 View 以减少 findViewById 的次数
private SparseArray<View> viewSparseArray;
public BaseViewHolder(ViewGroup parent, @LayoutRes int res) {
super(LayoutInflater.from(parent.getContext()).inflate(res, parent, false));
if(viewSparseArray==null){
viewSparseArray = new SparseArray<>();
}
}
/**
* 根据 ID 来获取 View
* @param viewId viewID
* @param <T> 泛型
* @return 将结果强转为 View 或 View 的子类型
*/
@SuppressWarnings("unchecked")
protected <T extends View> T getView(int viewId) {
// 先从缓存中找,找打的话则直接返回
// 如果找不到则 findViewById ,再把结果存入缓存中
View view = viewSparseArray.get(viewId);
if (view == null) {
view = itemView.findViewById(viewId);
viewSparseArray.put(viewId, view);
}
return (T) view;
}
两只黄鹂鸣翠柳,一行白鹭上青天
厉害了,南无大乘妙法莲华经
牛逼啊~ 好像没看懂几条