【发布时间】:2019-09-23 08:17:02
【问题描述】:
我正在开发一个聊天应用程序。它具有类似于 WhatsApp 的聊天活动,此应用具有发送短信和文件(图像/pdf/doc 等)等功能。我们在聊天活动中使用 recyclerview 作为消息列表。聊天活动的 Recyclerview 具有多种视图类型,例如用于文本消息的 textview 和用于图像的 imageview 以及用于其他文件类型(如 DOC 和 PDF)的其他自定义视图。我们有一个用于视图类型文件的自定义视图类。当用户发送文件(图像、pdf、doc 等)时,会根据文件类型创建视图。
当用户将文件发送给另一个用户时,会创建一个新视图并将其添加到列表中,我们还会显示文件上传状态,例如 uploading-in-progress、uploading-failed ,上传成功在聊天项目上。
我们在这里遇到一个问题,当用户向另一个用户发送多个文件时,上下滚动屏幕,视图被重新循环并且视图的位置发生变化,因此在显示上传状态时,我们丢失了开始上传的旧视图。现在我们在该位置有另一个视图实例。
因此,滚动后上传进度显示在另一个视图上。我们只想在滚动前的正确位置显示上传状态。
我们尝试了几种设置方法
recyclerview.getRecycledViewPool().setMaxRecycledViews(VIEW_TYPE_FILE, 0);
它使recylerview不回收视图文件类型,但它使recylerview滚动很慢。
请提供解决方案。任何帮助表示赞赏。
【问题讨论】:
标签: android android-recyclerview