【问题标题】:Android RecyclerView Sort And Update Position From Service with Broadcast ReceiverAndroid RecyclerView 使用广播接收器从服务中排序和更新位置
【发布时间】:2021-12-15 09:31:16
【问题描述】:
我尝试构建一个应用程序。
在这里,我有一个数据库和一个数据库项目的 RecyclerView。
还有一个在后台处理数据的服务和一个广播接收器向 RecyclerView 显示进度和位置。
但是现在我想对 RecyclerView 进行排序,这样做之后位置实际上发生了变化。
所以java代码在之前的那个位置找不到那个项目。
或者有什么方法可以找到带有数据库 ID 的项目以显示更新。
或任何可能的方式来解决排序后的项目位置。
【问题讨论】:
标签:
android
android-recyclerview
android-sqlite
android-service
【解决方案1】:
您不应该使用位置来在不断变化的回收站视图中查找项目。如果您的 recyclerview 中的对象包含某种 ID 或任何唯一标识每个项目的值组合,那就更好了。然后,您可以通过编写类似private int findItemPositionById(int id) 的方法找到您感兴趣的 RecyclerView 的项目,并让它返回您感兴趣的项目的新位置。通常 sql 数据库表将包含一个您可以使用的主键。如果他们不建议你生成一个。甚至还有一个内部的叫ROW_ID
如果您在开始排序之前对要查找的项目有参考,另一种选择是使用.indexOf(item),如
newlySortedArrayListOfItems.indexOf(itemOfInterest);
应该返回新位置