簡體   English   中英

具有自定義模型的Android ViewModel

[英]Android ViewModel with custom Model

我打算有一個模型類,並通過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嵌套在另一個類中是否是一個好主意。

每次更換書時,我都要為書名創建一個新的觀察者嗎?

在這里回答了類似的問題

您應該使用Transformation在觀察者之間傳送數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM