gpt4 book ai didi

android - Livedata 观察者的多个实例

转载 作者:太空狗 更新时间:2023-10-29 14:38:22 38 4
gpt4 key购买 nike

我正在努力寻找一种解决方案,以便在一个 Activity 中多次调用实时数据观察器,而不是创建它的多个实例,这会在数据库更改时导致问题,我从所有实例中获得回调。

View 模型

public class RatingsViewModel extends AndroidViewModel {

private RatingsRepository ratingsRepository;
private LiveData<List<Rating>> ratingsList;

public RatingsViewModel(Application application) {
super(application);
ratingsRepository = new RatingsRepository(application);

}

public LiveData<List<Rating>> getRatingsByDate(LocalDate date) {
ratingsList = ratingsRepository.getActivitiesByDate(date);
return ratingsList;
}

Activity

private void getRatingsByDate(LocalDate date) {
ratingsViewModel.getRatingsByDate(date).observe(this, activities -> {
// list populating stuff
});
}

我尝试调用 hasObserver() 但它返回 false,所以我无法删除观察者。

最佳答案

您应该能够执行以下操作(在 Kotlin 中,但如果需要,应该可以轻松翻译成 Java)

val dateLiveData: MutableLiveData<Date> = MutableLiveData()

val ratingsList = MediatorLiveData<List<Rating>>().apply {
this.addSource(dateLiveData) {
this.value = ratingsRepository.getActivitiesByDate(dateLiveData.value)
}
}

fun setDate(date: Date) {
dateLiveData.value = date
}

例如,您可以在 Activity/fragment 中从 onCreate() 调用 observe,然后在该值更改时调用 setDate() .

关于android - Livedata 观察者的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52364167/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com