EasyRecyclerView icon indicating copy to clipboard operation
EasyRecyclerView copied to clipboard

关于代码使用发现问题,共7点

Open yangchong211 opened this issue 6 years ago • 3 comments

我们这边的项目目前用你的这个框架已经有一年多了,发现了一些问题: 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;
    }

yangchong211 avatar Dec 28 '17 02:12 yangchong211

两只黄鹂鸣翠柳,一行白鹭上青天

yecaler avatar Apr 11 '18 07:04 yecaler

厉害了,南无大乘妙法莲华经

jp1017 avatar Nov 08 '18 01:11 jp1017

牛逼啊~ 好像没看懂几条

479493023 avatar Oct 16 '19 02:10 479493023