gpt4 book ai didi

Firebase 数据上的 Android Searchview

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

我想在填充了来自 Firebase 数据库的数据的 ListView fragment 中实现 Android Searchview 功能。

获取 Firebase 数据的代码

 mPOIAdapter = new FirebaseListAdapter<Poi>(
getActivity(),
Poi.class,
R.layout.item_layout_poi,
FirebaseDatabase.getInstance().getReference("poi").orderByChild("name")) {
@Override
protected void populateView(View v, Poi model, int position) {
TextView pointsText = (TextView) v.findViewById(R.id.poi_textview);
pointsText.setText(model.getName());
TextView pointDescr = (TextView) v.findViewById(R.id.poi_building);
pointDescr.setText(model.getDescription());
}
};

mPOIListView.setAdapter(mPOIAdapter);

搜索 View 代码:

   @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

inflater.inflate(R.menu.options_menu,menu);
MenuItem item = menu.findItem(R.id.search);
item.setVisible(true);
SearchView searchView = (SearchView) item.getActionView();

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

@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
}

我想使用这样的代码根据用户的输入过滤 Listview 项目

searchView.setOnQueryTextListener(new OnQueryTextListener() {

@Override
public boolean onQueryTextSubmit(String s) {
return false;
}

@Override
public boolean onQueryTextChange(String s) {
getListAdapter().getFilter().filter(s);
return true;
}
});

因为 FirebaseListAdapter 没有与 ListAdapter 相同的可能性,所以我不能使用 getListAdapter().getFilter().filter(s)

是否有另一种方法可以在填充有 Firebase 数据的 Listview fragment 中使用搜索功能

最佳答案

你不需要在任何数组中创建新方法“firebaseUserSearch”复制您的 RecyclerView 适配器并粘贴到里面。使用你的 databaseReference 来过滤它。

我的 Facebook 结构是:

 BLABLA:
Bars:
01:
BarName: "Best bar"
02:
BarName: "The Worst bar"

代码在这里:

  ....

databaseReference = FirebaseDatabase.getInstance().getReference ("Bars");

.....


searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String searchText) {

// TODO Auto-generated method stub

return false;
}

@Override
public boolean onQueryTextChange(String searchText) {

searchText = searchView.getQuery().toString();

firebaseUserSearch (searchText);

return true;
}
});
return true;
}



private void firebaseUserSearch (final String searchText) {


firebaseRecyclerAdapter = new FirebaseRecyclerAdapter <Bar, ViewHolder>(

Bar.class,
R.layout.custom_row,
ViewHolder.class,
databaseReference.orderByChild("barName").startAt(searchText.toUpperCase()).endAt(searchText + "\uf8ff"))
{
@Override
protected void populateViewHolder(ViewHolder viewHolder, Bar model, final int position) {

....

关于Firebase 数据上的 Android Searchview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504376/

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