实时Firebase列表视图上的Edittext筛选器

时间:2019-07-13 09:51:40

标签: java android firebase firebase-realtime-database

我以某种方式设法通过搜索(以<开头> @Alex Mamo )(以...开头)开发了一个过滤后的列表视图,但是当我打算搜索包含的字符串时遇到了另一个问题。我将遵循一些 答案 ,但是出现错误,提示不兼容的类型。 需要: com.google.firebase.database.Query 发现:

Query q = foodref.addListenerForSingleValueEvent(eventListener);

这是我的一些数据库数据。 enter image description here

这是我到目前为止的admin_search.java代码。

 searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            final String searchfood = inputSearch.getText().toString();

            DatabaseReference rootref = FirebaseDatabase.getInstance().getReference();
            DatabaseReference foodref = rootref.child("food");
            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Boolean found;
                    for(DataSnapshot ds : dataSnapshot.getChildren()){
                        String fooditemname = ds.child("fooditemname").getValue(String.class);
                        found = fooditemname.contains(searchfood);
                        Log.d("TAG" , fooditemname + " / " + found);

                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            };
            Query q = foodref.addListenerForSingleValueEvent(eventListener);
                    //Above Line I got Error : Incompatible types.Required:com.google.firebase.database.Query Found:void
                    //Query query = FirebaseDatabase.getInstance().getReference().child("food").orderByChild("fooditemname").startAt(searchfood).endAt(searchfood+"\uf8ff");

                    FirebaseListOptions<food> options = new FirebaseListOptions.Builder<food>()
                            .setLayout(R.layout.list_items).setLifecycleOwner(admin_search.this)
                            .setQuery(q,food.class).build();




                    adapter = new FirebaseListAdapter(options)
                    {
                        @Override
                        protected void populateView(View v, Object model, int position) {
                            TextView itemname, itemprice, avail;

                            itemname = v.findViewById(R.id.itemname);
                            itemprice = v.findViewById(R.id.itemprice);
                            avail = v.findViewById(R.id.avail);

                            food itemFood = (food) model;


                            itemname.setText(itemFood.getFooditemname().toString());
                            itemprice.setText(itemFood.getFooditemprice().toString());
                            avail.setText(itemFood.getAvailability().toString());


                        }
                    };

    lv.setAdapter(adapter);

如果我坚持使用query,那么我可以搜索以单词开头的美食名,但对于q却出错。

谢谢。

0 个答案:

没有答案