XRecyclerView 移除的踩坑之路(XRecyclerView 的bug?)

                   最近因为需要上下拉的刷新的功能,又不想重复造轮子,小编特意去找了个第三方的开源lib,

现在第三方上下拉刷新的开源lib是非常之多啊,我就不介绍了,反正小编情有独钟的看上了XRecyclerView ,

至于为什么,其实是朋友推荐的。。。。。


                 XRecyclerView 使用起来还是挺方便的,小编使用的过程,一路溜溜溜的,各种上下拉加载,

数据和布局显示都正常 ,但有个需求就是要能删除某一个item(还没做点击事件),按道理说,原

RecyclerView 已经自带增加删除,只要按正常套路走(排除原RecyclerView 的移除后的错乱问题),

是能正常实现增删功能的,但是结果总是出乎人的意料,居然还是出问题了,我滴个天啊啊啊。。。

             算了,还是直接上代码吧

            小编使用了   XRecyclerView  和 原 RecyclerView  进行比较 :

                XRecyclerView 的设置

        mAdapter = new TestAdapter(mContext,"XRecyclerView");
        mLlManager = new LinearLayoutManager(mContext);
        mLlManager.setOrientation(LinearLayoutManager.VERTICAL);
        mXRcView.setLayoutManager(mLlManager);
        mXRcView.setAdapter(mAdapter);
           

                原 RecyclerView   的设置

        mAdapter = new TestAdapter(mContext,"RecyclerView");
        mLlManager = new LinearLayoutManager(mContext);
        mLlManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecycler.setLayoutManager(mLlManager);
        mRecycler.setAdapter(mAdapter);

                以上两个属性的设置都一样的 , adapter 也是一样的

                看看adapter 的数据绑定方法里,就对三个位置属性进行了打印,不做其他

   @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        Log.e("bug", mTag + " ---->   Adapter   " + holder.getAdapterPosition() + "   Layout   " + holder.getLayoutPosition() + "  position  " + position);
    }
          

              然后不应用跑起来,不做任何点击和删除操作,直接看控制台打印

             先看原  RecyclerView 

E/bug: RecyclerView ---->   Adapter   0   Layout   0  position  0
E/bug: RecyclerView ---->   Adapter   1   Layout   1  position  1
E/bug: RecyclerView ---->   Adapter   2   Layout   2  position  2
E/bug: RecyclerView ---->   Adapter   3   Layout   3  position  3
            嗯,没问题,位置都一样

           接下来我们看XRecyclerView 

E/bug: XRecyclerView ---->   Adapter   1   Layout   1  position  0
E/bug: XRecyclerView ---->   Adapter   2   Layout   2  position  1
E/bug: XRecyclerView ---->   Adapter   3   Layout   3  position  2
E/bug: XRecyclerView ---->   Adapter   4   Layout   4  position  3
          心累啊,怪不得一直挂,这锅谁背?

         知道原因解决就好办了,在原RecyclerView 错乱问题的基础上,对使用holder.getAdapterPosition() 、holder.getLayoutPosition() 、position

进行一定的加减一操作就可以了

         这是不是 XRecyclerView  的bug?还是说我遇到了一个假的XRecyclerView 


             


你可能感兴趣的:(Android)