Firebase Android搜索视图



我只是开始学习Firebase和Android。我想在listView中创建一个搜索视图显示数据,并从Firebase中进行过滤数据。(例如Instagram搜索部分)我已经阅读了一些文档和其他问题,但我仍然不明白该如何做并启动它。谁能给我一些建议?我需要做什么?我应该从哪里开始?我应该使用firebaseui吗?有什么例子可以看吗?

您的代码显示以下步骤:

  1. 从数据库中检索数据并存储在数组或列表中。
  2. 将自定义列表适配器设置为可实现的可过滤的列表。
  3. 当用户在搜索框中键入
  4. 时触发过滤器

以下是检索用户列表并在活动中设置过滤器的示例:

            private List<User> usersList;
            private MyListAdapter adapter;
            private Listview listview;
            private DatabaseReference mDatabase;

               mDatabase = FirebaseDatabase.getInstance().getReference();
               mDatabase.child("users").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        usersList = new ArrayList<>();
                        for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { 
                                usersList.add(eventSnapshot.getValue(User.class);
                            } 
                          adapter = new MyListAdapter(context, usersList);
                          listview = (Listview) findViewById(R.id.mylistview);
                          listview.setAdapter(adapter);
                        }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        }
                    });
    searchButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   FilterNow();
                }
            });
        }
private void FilterNow() {
   String text = editText.getText().toString().toLowerCase().trim();
   if (TextUtils.isEmpty(editText.getText())){
      Toast.makeText(getContext(),"searchbox is empty!", Toast.LENGTH_SHORT).show();
      }else {
        adapter.getFilter().filter(text);
        friends.setAdapter(adapter);
        }
   }

接下来,您应该查找如何使列表适配器实现可过滤。祝你好运!

创建新方法" firebaseusersearch"复制您的回收库适配器并在内部粘贴。使用您的databasEreference过滤。

我的FB结构是:

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

最新更新