当每个内容中都有一个变量进行内容更新时,设置更新过程的最佳方法是什么

问题描述 投票:0回答:1

我想做的是创建一个烹饪警报应用程序。

我正在使用MVVM体系结构,并希望通过LiveData更新它。

这是我的警报类别。每隔一秒钟,item内部的所有data将被触摸,并应调用ticktick将更新timeLeft,应将其反映到UI上。但是,屏幕的其他组件应保持不变。

唯一定期更新的是代表剩余时间的文本(我尚未编写将代码从int转换为字符串的代码)。确保回收者视图仅更新时间并且不浪费时间重新设置图像和项目名称的最佳方法是什么?

class Alarm(item: Item, private val context: Context, val notifyID: Int) {

    var timeLeft = item.timeInSec
    val name = item.name
    val imageUri = item.imageUri

    var isFinished = false

    // count down goes down every seconds
    fun tick() {
        timeLeft--
        if (timeLeft <= 0) {
            onFinish()
        }
    }

    fun onFinish() {
        isFinished = true
    }

} 
android android-recyclerview android-livedata
1个回答
0
投票

一般的想法是,您的回收站视图将包含具有自己逻辑的片段,以使自己与秒保持最新。

这些片段将成为视图模型的所有者。视图模型包含滴答秒数(实时数据)。然后,片段将观察实时数据并更新其UI。

当您需要添加新计时器时,活动应将新列表元素添加到回收者视图适配器,并且回收者视图将被更新。

如果您需要有关任何组件的更多详细信息,请告诉我。

Alarm类可能应该扩展ViewModel,如果您使用的是MVVM。

© www.soinside.com 2019 - 2024. All rights reserved.