gpt4 book ai didi

android - 如何在单个 recyclerView 中设置两个不同的适配器?

转载 作者:太空宇宙 更新时间:2023-11-03 12:25:56 24 4
gpt4 key购买 nike

我正在显示数据列表。默认情况下,我使用 FirebaseRecyclerPagingAdapter 显示数据,因为我的数据列表很大。我也有搜索选项,当用户提交任何查询时,我会在我的 firebase realtime-database 中搜索结果,在这种情况下,我使用 FirebaseRecyclerAdapter 来显示我的结果。默认情况下,我得到了预期的结果,但是当搜索任何内容时,我没有得到任何输出。是否可以将不同的适配器设置为单个回收器 View ?这是我的代码

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);
}

最佳答案

使用swapAdapter

recyclerView.swapAdapter(yourAdapter, false)

有关 swapAdapter 的更多信息,请参阅此处 swapAdapter

关于android - 如何在单个 recyclerView 中设置两个不同的适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57140451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com