android 列表转换类型,通过更改列表类型进行Android LiveData转换

我有这个视图模型

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转换实现此目标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值