4

在我的应用程序中,我正在尝试使用 Android 架构库来实现 MVVM 设计模式。为此,我创建了一个ViewModel包含一些LiveData对象的类。

public class NotesViewModel extends AndroidViewModel {
    private ArrayList<Note> notes;

    private MutableLiveData<ArrayList<Note>> allNotes;
    private MutableLiveData<Note> selectedNote;

    public LiveData<Note> getAllNotes() {
        return allNotes;
    }

    // ...

在我的 UI 中,用户可以添加和删除笔记。为此,我认为在我的中创建添加和删除方法NotesViewModel并直接在 ArrayList 上操作就足够了,如下所示:

    // ...

    public void addNote(Note note) {
        notes.add(note);
        allNotes.setValue(notes);
    }
}

我对这个解决方案的问题是我无法获得用户删除或添加的特定注释;只有整个列表。那么我该怎么做呢?我是否必须为LiveData用户可以执行的每个事件创建一个对象?还是有更好的方法来做到这一点?

4

2 回答 2

0

一种可能的解决方案是使用DiffUtil

于 2018-01-19T08:09:56.023 回答
0

我找到了一个非常好的方法来处理这个问题ObservableArrayList我在这里为此创建了一个库,并添加了一些有用的附加功能。请随时向我发送任何反馈(这是我的第一个库)和请求请求。

请注意README当前不是最新的,因为我正在内部更改一些内容。我会尽快更新。我也将很快添加一个示例应用程序。

于 2018-05-02T22:12:07.840 回答