【发布时间】: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