首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于Firebase数据的Android Searchview

基于Firebase数据的Android Searchview
EN

Stack Overflow用户
提问于 2017-02-28 17:06:47
回答 1查看 2.3K关注 0票数 4

我想在一个列表视图片段中实现Android Searchview函数,其中填充了来自Firebase数据库的数据。

获取Firebase数据的代码

代码语言:javascript
复制
 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);

搜索视图代码:

代码语言:javascript
复制
   @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条目

代码语言:javascript
复制
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片段中使用搜索功能有什么替代方法吗

EN

回答 1

Stack Overflow用户

发布于 2018-02-05 04:00:01

您不需要在任何数组中,只需创建新方法"firebaseUserSearch“,复制您的RecyclerView适配器并粘贴到其中。使用databaseReference对其进行过滤。

我的FB结构是:

代码语言:javascript
复制
 BLABLA:
     Bars:
         01: 
            BarName: "Best bar"
         02:
            BarName: "The Worst bar"

代码在这里:

代码语言:javascript
复制
  ....

    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) {

  ....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42504376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档