android – Marshmallow(23)RecyclerView(23.1.0)在删除项目后滚动搞乱上面的内容(notifyItemRemoved)

前端之家收集整理的这篇文章主要介绍了android – Marshmallow(23)RecyclerView(23.1.0)在删除项目后滚动搞乱上面的内容(notifyItemRemoved)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如果使用Marshmallow(Android 23)构建,RecyclerView会搞砸.

我使用RecyclerView填充项目列表,当向右滑动将删除该项目.删除该项目工作正常.
但是在删除项目后向上滚动RecyclerView会在删除的项目上方的项目上创建空白区域.

我在这里使用示例项目https://github.com/chrisbanes/cheesesquare与最新的Android版本(Marshmallow)

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.support.android.designlibdemo"
    minSdkVersion 9
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
 }
}

添加滑动以关闭代码

private void setItemDismiss(final RecyclerView recyclerView) {
    ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.RIGHT,ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder,int direction) {
            int position = viewHolder.getAdapterPosition();
            ((SimpleStringRecyclerViewAdapter)recyclerView.getAdapter()).removeItemAt(position);
        }
    };

    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
    itemTouchHelper.attachToRecyclerView(recyclerView);
}

适配器具有removeItemAt方法删除项目

public void removeItemAt(int position) {
        mValues.remove(position);
        notifyItemRemoved(position);
    }

如果compileSdkVersion 22和targetSdkVersion 22与com.android.support:recyclerview-v7:22.2.0一切正常

检查:https://www.youtube.com/watch?v=AbiFzDzFwjo&feature=youtu.be

如果有人有这个问题,请告诉我.

最佳答案
我也遇到过这个问题.它似乎只是支持lib 23.1.0的一个问题.我没有遇到使用com.android.support:recyclerview-v7:23.0.1的问题.我已将此错误提交给Google https://code.google.com/p/android/issues/detail?id=191960

看起来修复工作正在进行中:https://code.google.com/p/android/issues/detail?id=190500

猜你在找的Android相关文章