【问题标题】:Handle file upload progress on recyclerview item while scrolling?滚动时处理recyclerview项目的文件上传进度?
【发布时间】:2019-09-23 08:17:02
【问题描述】:

我正在开发一个聊天应用程序。它具有类似于 WhatsApp 的聊天活动,此应用具有发送短信和文件(图像/pdf/doc 等)等功能。我们在聊天活动中使用 recyclerview 作为消息列表。聊天活动的 Recyclerview 具有多种视图类型,例如用于文本消息的 textview 和用于图像的 imageview 以及用于其他文件类型(如 DOC 和 PDF)的其他自定义视图。我们有一个用于视图类型文件的自定义视图类。当用户发送文件(图像、pdf、doc 等)时,会根据文件类型创建视图。

当用户将文件发送给另一个用户时,会创建一个新视图并将其添加到列表中,我们还会显示文件上传状态,例如 uploading-in-progressuploading-failed 上传成功在聊天项目上。

我们在这里遇到一个问题,当用户向另一个用户发送多个文件时,上下滚动屏幕,视图被重新循环并且视图的位置发生变化,因此在显示上传状态时,我们丢失了开始上传的旧视图。现在我们在该位置有另一个视图实例。

因此,滚动后上传进度显示在另一个视图上。我们只想在滚动前的正确位置显示上传状态。

我们尝试了几种设置方法

recyclerview.getRecycledViewPool().setMaxRecycledViews(VIEW_TYPE_FILE, 0);

它使recylerview不回收视图文件类型,但它使recylerview滚动很慢。

请提供解决方案。任何帮助表示赞赏。

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    这不是它应该如何工作的。您应该配置一个回收视图以匹配它现在表示的对象。如果你什么都不做,它会显示它之前表示的对象。所以每次你被要求提供一个视图并给你一个回收视图时,你需要从你的集合中获取相应的对象,并将回收视图中的所有可视化信息替换为它现在应该表示的对象的信息。我假设在您的情况下,该对象是一条消息。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多