【问题标题】: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);

应该返回新位置

【讨论】:

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