RecyclerView 中删除项目后重叠视图

2024-03-24

删除 RecyclerView 中的项目会导致视图重叠,如下视频所示Link https://youtu.be/bQs9DOAL614

片段_feed.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none" />

在适配器中

holder.setIsRecyclable(false);
  ((PostViewHolder) holder).mUsername.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                deleteItem(holder.getAdapterPosition());
            }
        });

void deleteItem(int index) {
    postList.remove(index);
    notifyItemRemoved(index);

}

当我改变时notifyItemRemoved(index); to notifyDataSetChanged();似乎解决了我的问题,但它导致删除动画被破坏。 我试图找到解决方案来解决这个问题,但似乎没有人与我有同样的问题。感谢您的回答

EDIT

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    holder.setIsRecyclable(false);
    if (holder instanceof PostViewHolder) {
        Post post = (Post) postList.get(position);
        String type = post.getTypePost();

        // Inflate Layout //
        LayoutInflater inflater = LayoutInflater.from(mContext);


        ((PostViewHolder) holder).mUsername.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                deleteItem(holder.getAdapterPosition());
            }
        });

        ((PostViewHolder) holder).mUsername.setText(post.getOwnerPost());


    } else if (holder instanceof HeaderViewHolder) {

    } else{
        ((ProgressViewHolder) holder).progressBar.setIndeterminate(true);
    }
}

在 onBindViewHolder 中添加 clickListener 并更改代码如下

PostViewHolder postViewHolder=(PostViewHolder) holder;
postViewHolder.mUsername.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            deleteItem(holder.getAdapterPosition());
        }
    });

void deleteItem(int index) {
    postList.remove(index);
    notifyItemRemoved(index);
    notifyItemRangeChanged(position, yourDataSet.size());
}
holder.setIsRecyclable(true);

删除时,始终从数据列表中删除项目,然后通知适配器。 当每个viewholder数据具有不同的数据状态时,也可以使用holder.setIsRecyclable(false)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RecyclerView 中删除项目后重叠视图 的相关文章

  • Android 中的短信编码

    我的问题是我想发送特定类别和特定编码的短信 0 类和 7 位编码 当检查 Android Telephony SmsManager 和 SmsMessage 时 您无能为力 SmsManager 提供两个功能 发送文本消息和发送数据消息 如
  • 在 Android strings.xml 文件中使用 HREF

    我正在尝试从 strings xml 文件中为 TextView android text 属性分配以下字符串 我无法让链接显示为可点击的超链接 有什么建议么 我尝试过以下技术
  • Android Surface 与 Canvas 的关系

    Surface 和 Canvas 之间到底是什么关系 请解释 表面是一个缓冲区 画布保存绘图 视图未附加到画布 也不是表面 窗户被绑在 Surface 和 ViewRoot 询问 随后使用的画布表面 通过要绘制的视图 详细答案你可以阅读这篇
  • 如何在状态更改时更改 Android 切换按钮的文本颜色?

    我的切换按钮对于每个状态都有不同的颜色背景 红色和白色 现在我需要在激活时更改切换按钮文本 红色 白色 的颜色 使用 xml 我无法让它工作 也许有人知道我做错了什么 我的布局 xml 中的按钮
  • com.google.android:android:jar 的 dependency.dependency.version' 丢失

    我正在尝试使用 Eclipse 运行一个简单的虚拟 Android 项目 并且我正在尝试使用 Maven amd 我已按照已接受答案的教程进行操作this https stackoverflow com questions 6735562
  • 在我授予许可后,表面视图不显示相机

    public View onCreateView LayoutInflater inflater Nullable ViewGroup container Bundle savedInstanceState View view inflat
  • cordova - 删除不必要的权限

    我需要在游戏中播放声音 因此我将 org apache cordova media 插件添加到我的应用程序中 现在platforms android AndroidManifest xml包含2个我不需要的条目
  • InflateException 膨胀类 android.support.design.widget.CoordinatorLayout 时出错

    E AndroidRuntime 致命异常 main 进程 com atech a business PID 30662 java lang RuntimeException 无法启动活动 ComponentInfo com atech a
  • 您如何在 Android 上处理超高 MP 相机(和图像)? - “画布:尝试绘制太大的位图”

    我有一个活动 用户可以像这样打开相机 getPictureUri createImageFromFile true let photoUri it openCameraActivity REQUEST IMAGE CAPTURE it ph
  • Android 上的嵌套滚动

    我们的活动中有一个主要的水平滚动视图 以及嵌套在其中的几个垂直滚动视图 这个想法是水平滚动 直到找到所需的垂直列表 然后上下滚动 理想情况下 一旦开始垂直滚动 我希望垂直滚动具有 锁定 现在会发生什么 如果您非常小心 您可以垂直滚动 但如果
  • Android EditText默认数字键盘和允许文本[重复]

    这个问题在这里已经有答案了 可能的重复 EditText 默认带有数字键盘 但允许字母字符 https stackoverflow com questions 3544214 edittext with number keypad by d
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • Android Facebook SDK 和 URL 方法成功形成好友对话框,但无法提交

    我开始认为这是一个错误 请证明我错了 我想以编程方式在 Facebook 上加好友 他们是唯一且肯定是该人在现实生活中认识的人 以下三种解决方案都具有相同的结果 成功的好友对话框 意味着个人资料名称 图片 指示操作的语句 与某人成为好友 以
  • 即时应用程序上的文本转语音崩溃

    我正在实现一个即时应用程序 该应用程序利用 Android 设备上提供的文本转语音功能 我已经设法得到了TextToSpeech按照 Android 开发博客文章中详细说明的说明 实例已初始化并可在非即时应用程序中正常工作Android 中
  • 喷气背包中不同类型的宽度组成

    我正在 jetpack compose 的文本字段中工作 我想建立这样的东西 TextField value value onValueChange value it modifier Modifier requiredWidth 56 d
  • 抽屉式导航不显示片段

    我创建了一个新的 Android Studio 项目 我的 MainActivity 是导航抽屉活动 所以 我无法显示碎片 我在互联网上和这里读过很多帖子 解释 我打开导航抽屉 选择菜单 播客 PodcastsFragment 应该显示 但
  • 不幸的是应用程序已在 Android 模拟器中停止

    我是 Android 新手 正在尝试一些小应用程序 例如 Compass 当我在模拟器中运行应用程序时 它会给出消息Unfortunately Compass has Stopped 我没有编译时错误 我该如何解决这个问题 是什么原因造成的
  • 我收到“循环依赖”Android Dagger Hilt 错误

    我从头开始检查了所有内容 但找不到错误 我找不到错误 可能是什么 我收到以下编译错误 HomeViewModel java 6 error ComponentProcessor MiscError dagger internal codeg
  • 如何强制刷新 CallLog.Calls.CACHED_NAME 列?

    我的目标是从通话记录中收集所有未知的电话号码 这可以通过以下代码来实现 private static final String CALLOG PROJECTION CallLog Calls ID CallLog Calls CACHED
  • 如何在清单文件中添加符合我意图的标志

    我们知道 我们可以使用 java 代码中的 addFlags 方法将一些标志添加到我们的意图中 有什么方法可以将这些标志添加到清单文件本身中 而不是用 java 代码编写 我需要为清单中的一项活动添加 REORDER TO FRONT 标志

随机推荐

  • 在 x86 32 位中禁用分页

    我试图直接写入物理内存位置 因此我使用汇编函数首先禁用分页 写入值 然后重新启用分页 但由于某种原因 在尝试写入时仍然会触发页面错误价值 据我了解 在x86 32位中 通过翻转cr0中的第32位来打开和关闭分页 所以这是我的汇编函数 mov
  • 使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数

    我尝试使用 robocopy 复制文件 但 PowerShell 给出错误 MissingArgument robocopy D Enciclopedia mia Tutorial FATTI DA ME Internet Google L
  • 是否可以让您上传的 iPhone 应用程序自动更新? [复制]

    这个问题在这里已经有答案了 我即将将我的 iPhone 应用程序上传到苹果商店 但我打算在不久的将来发布更多版本 一旦我将新版本上传到苹果商店 是否有办法使我的应用程序自动更新 也就是说 我即将上传版本 1 0 一旦我上传版本 1 x 用户
  • 并发字典 AddOrUpdate 与索引添加

    在当前项目中 我可以通过两种方式为并发字典中的现有键分配值 A concurrentDictionary1 key value and B concurrentDictionary2 AddOrUpdate key value k v gt
  • 如何在 Pygame 中获取显示器的分辨率?

    我只是想知道我是否可以在 Pygame 中获取显示器的分辨率 然后使用这些尺寸创建一个窗口 以便启动程序检测显示器分辨率 然后自动将窗口适合全屏屏幕 我目前正在使用pygame display set mode AN INTEGER AN
  • weblogic.jndi.WLInitialContextFactory 类在哪里?

    当尝试执行我的 jar 文件时 出现异常 javax naming NoInitialContextException Cannot instantiate class weblogic jndi WLInitialContextFacto
  • 有条件地将操作添加到 Java 8 流

    我想知道是否可以根据流外部设置的某种条件向流添加操作 例如 我想向流添加限制操作 如果我的limit变量不等于 1 我的代码目前看起来像这样 但我还没有看到以这种方式使用流的其他示例 其中 Stream 对象被重新分配给应用于自身的中间操作
  • Haskell 中关系数据的安全建模

    我发现在函数式程序中对关系数据建模是很常见的 例如 在开发网站时 我可能希望使用以下数据结构来存储有关我的用户的信息 data User User name String birthDate Date 接下来 我想存储有关用户在我的网站上发
  • Django 自定义表单 ImportError 即使文件位于同一目录中

    我正在努力通过有效的 Django http effectivedjango com 教程系列 我目前在尝试创建要在应用程序中使用的自定义表单时遇到问题 我按照中的说明创建了 forms py 文件本教程的这一部分 http effecti
  • 中心参数在新的谷歌地图嵌入中不起作用

    我已将新的嵌入代码用于新的谷歌地图 如下所示 https developers google com maps documentation embed guide https developers google com maps docum
  • C++:在这种情况下引用的优点是什么?

    我有两段代码 int f1 int b return b int f2 int b return b 这些功能有什么区别 我知道第二个返回一个引用 但由于我可以以相同的方式使用这两个函数 有什么区别 编辑 这个功能更好吗 int f2 in
  • RMySQL dbWriteTable 与 field.types

    我有一个数据框 称为df 看起来像这样 dte val 2012 01 01 23 2323 2012 01 02 34 343 列上的类型是日期和数字 我想使用已经打开的连接将其写入 MySQL 数据库 连接工作正常 因为我可以很好地查询
  • 解决PeriodFormat 中Joda Time 错误的方法?

    这是我的代码 揭示了 Joda Time 错误 import org joda time Period import org joda time format PeriodFormat import org joda time format
  • 如何创建学习清单项目

    我有一个水平的RecyclerView看起来像这样 显然 1 2 3 4 5 我想做这个 1 2 3 4 5
  • Hadoop 中分布式缓存的生命周期

    Hadoop流作业中使用分布式缓存机制将文件传输到节点时 作业完成后系统是否会删除这些文件 如果它们被删除 我认为是这样 有没有办法使缓存保留用于多个作业 这在 Amazon Elastic Mapreduce 上的工作方式是否相同 我正在
  • 时序问题 - DGV 在流程修改数据之前刷新

    我在表单上有一个按钮 用于启动一个进程 在 x 不同 秒后 更改数据库表 Y 中的一些数据 调用 InitializeGridView 然后刷新显示前面提到的表 Y 的 DGV 问题是InitializeGridView 在进程之前完成 因
  • 使用 Typescript 扩展 Express Request 对象

    我正在尝试添加一个属性来使用打字稿从中间件表达请求对象 但是我不知道如何向对象添加额外的属性 如果可能的话 我宁愿不使用括号表示法 我正在寻找一个解决方案 允许我编写类似的内容 如果可能的话 app use req res next gt
  • 使用 Sun 专有的 Java 类是一种不好的做法吗?

    如果您使用 Sun 专有的 Java 类 编译器会显示警告 我认为使用这些类通常是一个坏主意 我在某处读到过这个 然而 除了警告之外 还有什么根本原因不应该使用它们吗 因为它们是内部 API 它们可能会发生变化无证的 or 不支持的方式并且
  • 尝试使用 RSA 密钥通过 SSH 访问 EC2,获取:不正确的 RSA1 标识符...权限被拒绝(公钥)

    我在 Amazon EC2 上创建了一个 Ubuntu 12 04 实例 我已经下载了 PEM 文件并且能够通过 SSH 连接到实例 没有问题 现在 我想在远程实例上为顾问等创建一些帐户 他们应该能够使用 RSA 密钥通过 ssh 进入盒子
  • RecyclerView 中删除项目后重叠视图

    删除 RecyclerView 中的项目会导致视图重叠 如下视频所示Link https youtu be bQs9DOAL614 片段 feed xml