如何使用 RecyclerView 显示下载列表?
How can I show a Downloads List using RecyclerView?
我需要跟踪和更新列表中多个文件的下载状态(开始、暂停、播放、完成),这些文件是我从 Api(无法共享)获得的,放到 RecyclerView 上。
我也得到了一个 fileId 所以每个文件都可以区分。
我需要基于 fileId 的下载跟踪,因为下载列表也是可搜索的,这意味着项目的位置会改变,所以我们可以'不依赖基于位置的 ViewHolder 刷新。
另外,如果因为某些原因你关闭了应用程序,然后返回列表,搜索文件,它应该会显示文件下载状态。
现在有三个选项:
a) 基于 WorkManager 的实现(如何实现这个选项?)
b) PRDownloader(这个选项如何实现?)
c) 或者 Android 的下载管理器? (需要确定我们需要在
同时在列表中。)
哪个更好更靠谱?
哪一个是最短的方法?
如果你有基于工作管理器的代码,也有人可以分享吗?(如何
您会设法将 fileId 与 workManger 的工作 ID 相关联吗?我
需要制作一个 DB table 来跟踪 Worker 的下载?
如果我们可以在 ViewHolder 中使用 workManager 中的 LiveData )
[参考 Blog/Code/Repos 将最有帮助]
回答我自己的问题(奇怪!)。
- 我用了Fetch Downloader Library
- 已初始化并将“获取实例”用作单例
- 添加了使用标签的下载(也许我错误地使用了标签。它应该用于一组下载。但我为每个下载使用了一个标签。但是它起作用了。)
- 现在我在 ViewHolder 的 bind() 方法中执行了以下操作:
- 将文件 ID 作为“标签”并删除链接到的 FetchObserver
“标签”,即使用“获取实例”方法的 ID(//将更新
方法)
- 然后再次在“Fetch”中找到下载
使用 Id 作为“标签”的“实例”。(getDownloadsByTag() 方法)
- 如果有下载,你会收到一个downloadList,它的第0个
元素将是你的下载,因为我每次下载使用一个标签
而不是团体。
- 现在再次为此添加 FetchObserver
“标签”。
- 在 FetchObserver 的 lambda 中,更新进度和其他值。
注意:出于保密目的,不能共享代码。如果您觉得这令人困惑,可以分享一些小片段。
我需要跟踪和更新列表中多个文件的下载状态(开始、暂停、播放、完成),这些文件是我从 Api(无法共享)获得的,放到 RecyclerView 上。
我也得到了一个 fileId 所以每个文件都可以区分。
我需要基于 fileId 的下载跟踪,因为下载列表也是可搜索的,这意味着项目的位置会改变,所以我们可以'不依赖基于位置的 ViewHolder 刷新。
另外,如果因为某些原因你关闭了应用程序,然后返回列表,搜索文件,它应该会显示文件下载状态。
现在有三个选项:
a) 基于 WorkManager 的实现(如何实现这个选项?)
b) PRDownloader(这个选项如何实现?)
c) 或者 Android 的下载管理器? (需要确定我们需要在 同时在列表中。)哪个更好更靠谱?
哪一个是最短的方法?
如果你有基于工作管理器的代码,也有人可以分享吗?(如何 您会设法将 fileId 与 workManger 的工作 ID 相关联吗?我 需要制作一个 DB table 来跟踪 Worker 的下载? 如果我们可以在 ViewHolder 中使用 workManager 中的 LiveData )
[参考 Blog/Code/Repos 将最有帮助]
回答我自己的问题(奇怪!)。
- 我用了Fetch Downloader Library
- 已初始化并将“获取实例”用作单例
- 添加了使用标签的下载(也许我错误地使用了标签。它应该用于一组下载。但我为每个下载使用了一个标签。但是它起作用了。)
- 现在我在 ViewHolder 的 bind() 方法中执行了以下操作:
- 将文件 ID 作为“标签”并删除链接到的 FetchObserver “标签”,即使用“获取实例”方法的 ID(//将更新 方法)
- 然后再次在“Fetch”中找到下载 使用 Id 作为“标签”的“实例”。(getDownloadsByTag() 方法)
- 如果有下载,你会收到一个downloadList,它的第0个 元素将是你的下载,因为我每次下载使用一个标签 而不是团体。
- 现在再次为此添加 FetchObserver “标签”。
- 在 FetchObserver 的 lambda 中,更新进度和其他值。
注意:出于保密目的,不能共享代码。如果您觉得这令人困惑,可以分享一些小片段。