잡동사니

반응형

질문

검색 창에 텍스트를 입력하면 프로그램이 검색 한 제품이 아닌 모든 제품을 표시합니다. 검색 창에 's'를 입력하면 이름이 's'로 시작하거나 포함 된 제품 만 표시되지만 모든 제품 만 표시된다고 가정 해 보겠습니다. 코드의 문제점을 파악할 수 없습니다. 그러니 제발 도와주세요.

이것은 RecyclerAdapter를 사용하여 데이터를 가져 와서 "UserViewHolder"class에 전달하는 기능입니다. 여기에서는 firebaseSearchQuery와 함께 하위 'pname'에 "orderbychild"를 사용하여 데이터를 정렬하려고합니다.

Firebase 데이터베이스.

products firebase database

    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();

    }

UserViewHolder

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

    }
}

답변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쿼리를 사용합니다.



 

 

 

 

출처 : https://stackoverflow.com/questions/60810621/recyclerview-with-firebase-search-display-all-products-when-searched

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band