【问题标题】:RecyclerView with Firebase Search display all products when searched带有 Firebase 搜索的 RecyclerView 在搜索时显示所有产品
【发布时间】:2020-03-23 09:13:06
【问题描述】:

当我在搜索栏中输入一些文本时,我的程序会显示所有产品,而不是我搜索的产品。假设如果我在搜索栏中输入“s”,它应该只显示名称以“s”开头或包含“s”的产品,但它只显示所有产品。我无法弄清楚代码有什么问题。所以,请帮忙。

这是我的函数,我使用 RecyclerAdapter 获取数据,然后将它们传递给“UserViewHolder”类。在这里,我试图通过使用 firebaseSearchQuery 对子“pname”使用“orderbychild”对我的数据进行排序。

Firebase 数据库。

    private void firebaseUserSearch(String searchText){

    Query firebaseSearchQuery = ProductRef.orderByChild("pname").startAt(searchText).endAt(searchText 
    + "\uf8ff");

    FirebaseRecyclerOptions<Products> options = new FirebaseRecyclerOptions.Builder<Products>()
            .setQuery(ProductRef,Products.class).build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Products, UsersViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull 
        Products model) {

            holder.setDetails(getApplicationContext(), model.getPname(), model.getPprice(), 
        model.getPmrp(), model.getPcondition(), model.getPimage());

        }

        @NonNull
        @Override
        public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = 
        LayoutInflater.from(parent.getContext()).inflate(R.layout.buy_now_phones,parent,false);
            return new UsersViewHolder(view);
        }
    };

    recyclerView.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();

    }

用户视图持有者

   public static class UsersViewHolder extends RecyclerView.ViewHolder{

    View mView;

    public UsersViewHolder(@NonNull View itemView) {
        super(itemView);

        mView = itemView;
    }

    public void setDetails(Context context, String phoneName, String phonePrice, String phoneMrp, String phoneCondition, String phoneImage){

        TextView phone_name = (TextView) mView.findViewById(R.id.product_name);
        TextView phone_price = (TextView) mView.findViewById(R.id.product_price);
        TextView phone_mrp = (TextView) mView.findViewById(R.id.product_mrp);
        TextView phone_condition = (TextView) mView.findViewById(R.id.product_condition);
        ImageView phone_image = (ImageView)mView.findViewById(R.id.product_image);

        phone_name.setText(phoneName);
        phone_price.setText(phonePrice);
        phone_mrp.setText(phoneMrp);
        phone_condition.setText(phoneCondition);
        Picasso.with(context).load(phoneImage).into(phone_image);

    }
}

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    改变这个:

       FirebaseRecyclerOptions<Products> options = new FirebaseRecyclerOptions.Builder<Products>()
                .setQuery(ProductRef,Products.class).build();
    

    进入这个:

       FirebaseRecyclerOptions<Products> options = new FirebaseRecyclerOptions.Builder<Products>()
                .setQuery(firebaseSearchQuery,Products.class).build();
    

    setQuery()方法中使用查询firebaseSearchQuery

    【讨论】:

    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多