观察从ArrayList

时间:2018-01-19 07:54:49

标签: android mvvm android-livedata android-viewmodel

在我的应用中,我尝试使用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;
    }

    // ...

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

    // ...

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

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

2 个答案:

答案 0 :(得分:0)

可能的解决方案是使用DiffUtil

答案 1 :(得分:0)

我发现用ObservableArrayList处理这个问题的方法非常好。我为此here创建了一个库,并添加了一些有用的附加功能。请随意向我发送任何反馈(这是我的第一个图书馆)并提出请求。

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