Android分页库,无尽的RecyclerView,改造

问题描述 投票:0回答:1

我有一个 EditText 和一个 RecyclerView。我想观察 EditText 并从 TMDB API 获取数据到无尽的 RecyclerView。我可以使用 Retrofit 和 Paging 库将数据从 API 获取到无尽的 Recyclerview。但我只能从 viewModel 向 API 发送查询,我想观察 EditText 并将该查询发送到 API。我怎样才能实现这个目标? 查看模型:

class AddViewModel(private val movieRepository : MoviePagedListRepository) : ViewModel() {
    val isError = MutableLiveData<Boolean>()
    val isLoading = MutableLiveData<Boolean>()
    private val compositeDisposable = CompositeDisposable()
    val movieSeriesETContent = MutableLiveData<String>()
    
    val  moviePagedList : LiveData<PagedList<Movie>> by lazy {
        movieRepository.fetchLiveMoviePagedList("break",compositeDisposable)
    }

    override fun onCleared() {
        super.onCleared()
        compositeDisposable.dispose()
    }
}

片段:

vm.movieSeriesETContent.observe(viewLifecycleOwner, Observer {
            Log.d("Murad",it)
        })

vm.moviePagedList.observe(viewLifecycleOwner, Observer {
            adapter.submitList(it)
        })

您可以在 ViewModel 类中看到请求“break”,但我想在观察现在放置 Log.d("Murad",it) 的 EditText 时发送查询。

android mvvm android-recyclerview android-paging-library
1个回答
0
投票

您应该将

EditText
替换为
SearchView
并应用
OnQueryTextListener
。这样对于文本更改就不会对观察者有任何要求。

searchView.setOnQueryTextListener(new OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            //you can show a progress bar here as well
            progressBar.setIndeterminate(true);

            // here you can call your ViewModel's searchQueryMethod()
          
            return true;
        }
});

在您的观察者中,您只需要适配器上的更改数据集。我也使用 TMDB API 创建了一个 app,这也是我获取电影列表的方法。

快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.