【问题标题】:Can you only use NotifyDataSetChanged for an adapter?您只能将 NotifyDataSetChanged 用于适配器吗?
【发布时间】:2017-06-02 10:18:35
【问题描述】:

我想刷新我的 HomeScreenActivity,以便您在付款后查看余额(它适用于 NFC/HCE)。

扫描手机后,您会返回 HomeScreenActivity。问题是当你返回时,你的余额按钮没有更新,所以你有旧的余额。当您返回登录活动并再次登录时,您将获得新余额。

我尝试了很多来解决这个问题,但似乎没有任何效果。也许问题在于与您的余额的通信来自数据库/API。

希望有人能给我解释或解决问题!!

附注我没有平衡适配器!

【问题讨论】:

  • @KailasBhakade 我知道何时使用通知数据集已更改,但问题是我的余额没有适配器,所以我想知道您是否可以使用通知数据或其他方式重新加载该活动你要去。

标签: android database-connection refresh adapter notifydatasetchanged


【解决方案1】:

对于要刷新金额的活动,请使用 onActivityResult 方法。并在 onActivityResult 方法中重置适配器并调用 notifyDataSetChanged()。

【讨论】:

    【解决方案2】:

    你有很多方法可以做到这一点。你可以研究一下 onActivity 结果,它将帮助你解决这个问题。 EventBus、observer 也是一样的解决方案。

    【讨论】:

    • 我会试一试的。感谢您的帮助!
    • onActivity 结果在另一个活动完成并返回主屏幕活动时运行。 EvenBus 和观察者具有相同的逻辑,但在您的自定义函数上。如果您有任何问题或有结果,请告诉我^_^
    【解决方案3】:

    您有很多方法可以让您的数据始终保持最新状态: 我将列出其中的一些:

    • 为您的本地数据库使用领域。它有自己的类扩展 recyclerviewAdapter 和其他类,以在表中的数据发生更改时通知您。
    • 使用新的 Android Room 库,它也可以使用 LiveData 做同样的事情
    • 使用 RxJava 订阅应用程序中的一些更改。当发生更改时,Rx 将向所有订阅者发送新项目。
    • 用户观察者 OOP 模式

    NotifyDataSetChanged 做同样的事情。当您希望更改容器数据时,您调用此方法,RecyclerView.Adapter 会将所有现有的 ViewHolders 重新绑定到新数据。

    这些并不是组织通知的所有可能变体。您还可以使用 EventBus 或某种计时器以指定的延迟刷新数据(这不是最好的)。

    【讨论】:

    • 非常感谢,我会寻找这些方法。
    • 谢谢,你知道当数据库发生变化时 RxJava 是否可以工作吗?
    • @RickMkl 是的。 Realm 数据库为 observable 提供方法,该方法将向订阅者/ Room 发出项目 - ORM over Sqlite 还可以从包装到 Flowable 的数据库中返回您的数据(RXJava 2 类型)
    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多