【发布时间】:2019-11-30 02:25:08
【问题描述】:
我正在显示数据列表。默认情况下,我使用FirebaseRecyclerPagingAdapter 显示数据,因为我的数据列表很大。我也有搜索选项,当用户提交任何查询时,我在firebase realtime-database 中搜索了结果,在这种情况下,我使用FirebaseRecyclerAdapter 来显示我的结果。默认情况下,我得到了预期的结果,但是当搜索任何内容时,我没有得到任何输出。是否可以为单个回收器视图设置不同的适配器?这是我的代码
private FirebaseRecyclerPagingAdapter<BookLight, BookViewHolder> mAdapter;
private FirebaseRecyclerAdapter<BookLight,BookViewHolder> mAdapterNopage;
private static final String ALL_TYPE="all";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
recyclerView = view.findViewById(R.id.recyclerviewid_grp);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
loadData(ALL_TYPE);
return view;
}
private void loadData(String queryBook){
Query query;
if(queryBook.equals(ALL_TYPE)){
query=FirebaseDatabase.getInstance().getReference()
.child("GroupMembersBooks")
.child(groupDetails.getGroupID())
.child("books");
mAdapter = new FirebaseRecyclerPagingAdapter<BookLight, BookViewHolder>(options) {
//other stuffs
recyclerView.setAdapter(mAdapter);
};
}
else{
Log.e(TAG, "loadData: "+queryBook);
query=FirebaseDatabase.getInstance().getReference()
.child("GroupMembersBooks")
.child(groupDetails.getGroupID())
.child("books")
.orderByChild("bookName")
.startAt(queryBook);
mAdapterNopage = new FirebaseRecyclerAdapter<BookLight, BookViewHolder>(options) {
//other stuffs
};
recyclerView.setAdapter(mAdapterNopage)
}
}
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater menuInflater) {
menuInflater.inflate(R.menu.group_timeline_menu,menu);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_book_search).getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getActivity().getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
loadData(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
super.onCreateOptionsMenu(menu,menuInflater);
}
【问题讨论】:
标签: android firebase-realtime-database android-recyclerview firebaseui