美文网首页需要使用
关于XrecyclerView使用小总结及角标越界问题

关于XrecyclerView使用小总结及角标越界问题

作者: 繁星_227a | 来源:发表于2018-07-02 11:36 被阅读127次

recycleView基础

android 5.0推出了RecyclerView,号称更快的listview,RecyclerView的布局相关操作交由layoutManager进行管理,这样可以实现相应的水平,垂直以及网格视图,自定义化更强,而listview需要承担数据与布局等多个职责。
recyclerView具有良好的解耦性,但是需要自行定义onItemClickListener,以及增加头布局、脚布局方法。(也可通过不同viewHolder实现)

XRecyclerView的使用

XRecyclerView的下载地址:https://github.com/XRecyclerView/XRecyclerView
XRecyclerView的使用与RecyclerView类似,具体请参考GitHubXrecyclerView说明。
但是,随着项目需求更变对首页数据频繁改动和刷新,发现了一个XRecyclerView的致命缺陷,就是在刷新过程中出现条目闪跳以及出现indexoutofboundsexception异常,当时一脸懵逼,后来在网上查了很多方法,后来找到一种靠谱的,特此记录,以供参考。主要是重写LinearLayoutManager,通过抓取onLayoutChildren以及scrollVerticallyBy方法中的异常,以实现预期效果。代码如下

public class LinearLayoutManagerWrapper extends LinearLayoutManager {

    public LinearLayoutManagerWrapper(Context context) {
        super(context);
    }

    public LinearLayoutManagerWrapper(Context context, int orientation, boolean reverseLayout) {
        super(context, orientation, reverseLayout);
    }

    public LinearLayoutManagerWrapper(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
        try {
            super.onLayoutChildren(recycler, state);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
        try {
            return super.scrollVerticallyBy(dy, recycler, state);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
}

仅供参考。

相关文章

网友评论

本文标题:关于XrecyclerView使用小总结及角标越界问题

本文链接:https://www.haomeiwen.com/subject/slgkuftx.html