【问题标题】:Android ViewModel with custom Model带有自定义模型的 Android ViewModel
【发布时间】:2019-12-06 00:27:34
【问题描述】:

我计划创建一个模型类并通过 Android ViewModel 提供此模型的实例。 ViewModel 中的实例可以在应用程序生命周期中发生变化。

我现在的想法是这样的:

public class Book {
    private MutableLiveData<String> mName = new MutableLiveData<>();

    public Book(...) {
        ...
    }

    public LiveData<String> getName() {
        return mName;
    }

    public void setName(String name) {
        mName.setValue(name);
    }
}

public class MyViewModel extends ViewModel {
    private MutableLiveData<Book> mCurrentBook = new MutableLiveData<>();
    private MutableLiveData<Book> mRecommendedBook = new MutableLiveData<>();

    public LiveData<Book> getCurrentBook() {
        return mCurrentBook;
    }

    public void setCurrentBook(Book book) {
        mCurrentBook.setValue(book);
    }
}

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);

        model.getCurrentBook().observe(this, book -> {
            book.getName().observe(this, name -> {
                // update UI
            });
        });
        ...
        model.setCurrentBook(someOtherBook);
    }
}

这是一个好方法吗?我不确定将 LiveData 嵌套在另一个类中是否是个好主意。

每次书发生变化时,我为书名创建一个新的观察者也会有问题吗?

【问题讨论】:

    标签: android model viewmodel android-livedata mutablelivedata


    【解决方案1】:

    我回答了类似的问题here

    您应该使用Transformation 在您的观察者之间传输数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多