如何根据LiveData.observe上收到的信息更新ROOM数据库?

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

我在整个代码的两个关键位置都遇到了这个问题,无法解决。我有以下问题:我想通过数据库检索信息并同时更新所有信息。我有一个带有普通存储库和ViewModel的会议室数据库。我的代码是这样的:

daysViewModel.getStopsBiggerThan(day).observe(this, new Observer<List<DayActivity>>() {
            @Override
            public void onChanged(List<DayActivity> dayActivities) {
                Log.d("stop_please_in_bigger", dayActivities.toString());
                if (sort == 1) {
                    for (DayActivity stop : dayActivities) {
                        DayActivity new_stop = new DayActivity(stop.getTitle_Day(), stop.getLocation_Day(), stop.getStars_Day(),
                                stop.getOpening_hours_1_Day(), stop.getOpening_hours_2_Day(), stop.getOpening_hours_3_Day(),
                                stop.getNotas_Day(), stop.getDay_Day() - 1, stop.getStarttime_Day(),
                                stop.getEndtime_Day(), stop.getOrder_Day());
                        new_stop.setId_Day(stop.getId_Day());
                        daysViewModel.update(new_stop);
                    }
                }
            }
        });

首先,我尝试使用一个简单的列表而不是LiveData,但是它只是返回了一个空对象。我还试图包括一个变量,使其像开关“ sort”一样工作,但它不起作用。

正如您到现在大多数人可能已经了解的那样,问题在于,通过在onChanged的void上更改数据库查询信息,我正在形成恶性循环。

android android-studio android-livedata
1个回答
0
投票

结果证明这是一个愚蠢的问题……只需尝试定义一个变量并对其进行操作!

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