【问题标题】:Observe add and remove events from ArrayList观察从 ArrayList 中添加和删除事件
【发布时间】:2018-01-19 07:54:49
【问题描述】:

在我的应用程序中,我正在尝试使用 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 对象?或者有更好的方法吗?

【问题讨论】:

    标签: android mvvm android-livedata android-viewmodel


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多