Android分页库,Endless RecyclerView,改造

问题描述

我有一个EditText和一个RecyclerView。我想观察EditText并将数据从TMDB API获取到无尽的RecyclerView。我可以使用Retrofit和Paging库将数据从API获取到无尽的Recyclerview。但是我只能从viewmodel向API发送查询,我想观察EditText并将查询发送给API。我该如何实现? viewmodel:

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”,但是当我观察EditText放置Log.d(“ Murad”,it)的位置时,我想发送查询

解决方法

您应将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,这也是我获取电影列表的方法。

快乐编码!