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)

  1. android {
  2. compileSdkVersion 23
  3. buildToolsVersion "23.0.1"
  4. defaultConfig {
  5. applicationId "com.support.android.designlibdemo"
  6. minSdkVersion 9
  7. targetSdkVersion 23
  8. versionCode 1
  9. versionName "1.0"
  10. }
  11. }

添加滑动以关闭代码

  1. private void setItemDismiss(final RecyclerView recyclerView) {
  2. ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.RIGHT,ItemTouchHelper.RIGHT) {
  3. @Override
  4. public boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,RecyclerView.ViewHolder target) {
  5. return false;
  6. }
  7. @Override
  8. public void onSwiped(RecyclerView.ViewHolder viewHolder,int direction) {
  9. int position = viewHolder.getAdapterPosition();
  10. ((SimpleStringRecyclerViewAdapter)recyclerView.getAdapter()).removeItemAt(position);
  11. }
  12. };
  13. ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
  14. itemTouchHelper.attachToRecyclerView(recyclerView);
  15. }

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

  1. public void removeItemAt(int position) {
  2. mValues.remove(position);
  3. notifyItemRemoved(position);
  4. }

如果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相关文章