Проблема : Наблюдатель на LiveData<PagedList>
не запускается после вызова ItemKeyedDataSource.LoadedInitialCallback.onResult()
.
В момент callback.onResult(...)
переданное значение является правильным. Однако после этого ничего не происходит.
Ожидается : После callback.onResult(...)
наблюдатель должен быть в состоянии обнаружить изменение в LiveData.
Релевантно Код : метод для получения данных из сети (он находится в классе под названием CommentManager), здесь мы использовали Firestore:
...
public void loadInitialComments(int pageSize,
ItemKeyedDataSource.LoadInitialCallback<Comment> callback) {
collectionReference.orderBy(DatabaseConstants.FIELD_TIMESTAMP)
.limit(pageSize)
.get()
.addOnSuccessListener(queryDocumentSnapshots -> {
callback.onResult(getComments(queryDocumentSnapshots));
});
}
...
Как функция вызывается в классе DataSource
...
@Override
public void loadInitial(LoadInitialParams<String> params,
LoadInitialCallback<Comment> callback) {
commentManager.loadInitialComments(params.requestedLoadSize, callback);
}
...
Класс ViewModel
public final class CommentViewModel extends ViewModel {
private final LiveData<PagedList<Comment>> comments;
public CommentViewModel() {
comments = new LivePagedListBuilder<>(new CommentDataSourceFactory(new CommentManager()), config).build();
}
public LiveData<PagedList<Comment>> getComments() {
return comments;
}
Как ViewModel вызывается в основном действии
...
CommentViewModel commentViewModel = new ViewModelProvider(this,
new CommentViewModelFactory())
.get(CommentViewModel.class);
commentViewModel.getComments().observe(this, comments -> commentListAdapter.submitList(comments));
...