我有这个视图模型
public class MainViewModel extends AndroidViewModel {
// Constant for logging
private static final String TAG = MainViewModel.class.getSimpleName();
private LiveData> journals;
public MainViewModel(Application application) {
super(application);
AppDatabase database = AppDatabase.getInstance(this.getApplication());
Log.d(TAG, "Actively retrieving the tasks from the DataBase");
journals = database.journalDao().loadAllJournals();
}
public LiveData> getJournals() {
return journals;
}
}
返回一个LiveData>我想转换实时数据以返回一个LiveData>ListItem列表包含JournalEntry对象和DateHeader对象的地方
我曾试图像这样操纵观察清单
private void setupViewModel() {
MainViewModel viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
viewModel.getJournals().observe(this, new Observer>() {
@Override
public void onChanged(@Nullable List journalEntries) {
Log.d(TAG, "Updating list of tasks from LiveData in ViewModel");
Map> journals = toMap(journalEntries);
Date previousDate = null;
for (Date date : journals.keySet()) {
HeaderItem header = new HeaderItem(date);
Date currentDate = header.getDate();
if(previousDate==null || !DateUtil.formatDate(currentDate).equals(DateUtil.formatDate(previousDate))){
items.add(header);
}
但是意识到视图模型正在复制onChange的所有项目,而不仅仅是更新已更改的项目。我不太确定如何使用LiveData转换实现此目标