Используя модификацию, я получаю текучие данные с сервера, затем в viewmodel я конвертирую текучие данные в Livedata и, наконец, наблюдаю LiveData в действии. Внутренняя деятельность Я использую Livedata для моего recyclerView.
Но мне нужно отфильтровать данные с некоторым условием и получить отфильтрованный список данных в виде LiveData. Как и где мне это сделать? Могу ли я отфильтровать Livedata?
Шаги, которые я делаю:
- В моем классе MainApi : вызов веб-службы с использованием модернизации, которая возвращает текучий результат
public interface MainApi {
@GET("xx")
Flowable<List<User>> getUsers();
}
В моем
классе репозитория :
public class MainRepository {
public Flowable<List<User>> fetchUsersFromServer() {
Flowable<List<User>> returnedData = mainApi
.getUsers()
.subscribeOn(Schedulers.io());
return returnedData;
}
}
В моем
классе viewModel : получить текучую среду из репозитория и преобразовать в LiveData
public class MainViewModel extends ViewModel {
MediatorLiveData<List<User>> liveUsers = new MediatorLiveData();
public void getUsersFromServer() {
final LiveData<List<User>> source = LiveDataReactiveStreams.fromPublisher( mainRepository.fetchUsersFromServer());
liveUsers.addSource(source, new Observer<List<User>>() {
@Override
public void onChanged(List<User> users) {
liveUsers.setValue(users);
liveUsers.removeSource(source);
}
});
}
}
Наконец, наблюдаем LiveData из
Activity и показываем данные в Recyclerview