简体   繁体   中英

How to load a recyclerView from 2 different spinner

I have to do a clothes shop app and I'm trying to do filter search with 2 spinners and a recyclerView. The problem is that I don't know how to filter it. The data is downloaded from firebase. The thing is that I want to be a dynamic recycler so if I choose one of the selections I want to be seen the request. So my problem is that I don't know how to know which of the two spinners are used. Both spinners must work individually, but they compliment each other.

Here is my code.

String txtBrand,txtKind;
Spinner spinBrand,spinKind;
RecyclerView rv;
List<String>Brands;
List<Producto> productlist;
AdapterAllProducts adapterAllProducts;
public DatabaseReference mReference;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =inflater.inflate(R.layout.filter_fragment, container, false);
    spinMarca=v.findViewById(R.id.spinnerBrand);
    spinTipo=v.findViewById(R.id.spinnerKind);
    rv=v.findViewById(R.id.rv);
    Brands= Arrays.asList(getResources().getStringArray(R.array.brands));
    mReference= FirebaseDatabase.getInstance().getReference("Product");
    spinBrand.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            txtBrand = Brands.get(i);
            loadRecycler(txtBrand);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
    return v;
}


public void loadRecycler(final String Marca){
    rv.setLayoutManager(new LinearLayoutManager(getContext()));
    productslist= new ArrayList<>();
    adapterAllProducts = new AdapterAllProducts(productslist,getActivity());
    adapterAllProducts.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Product prod = productslist.get(rv.getChildAdapterPosition(v));
            String pid = prod.getPid();
            String name = prod.getName();
            String desc = prod.getDescription();
            String ref = prod.getReference();
            float pri = (float)prod.getPrize();
            int cant = prod.getQuantity();
            String brand = prod.getBrand();
            Preferencias.setPid(getActivity(),pid);
            Preferencias.setName(getActivity(),nombre);
            Preferencias.setPrize(getActivity(),pre);
            Preferencias.setReference(getActivity(),ref);
            Preferencias.setDesc(getActivity(),desc);
            Preferencias.setQuantity(getActivity(),cant);
            Preferencias.setBrand(getActivity(),brand);

            Fragment fragment = new ProductsFragment();
            FragmentManager ManagerUser = getFragmentManager();
            FragmentTransaction transactionUser = ManagerUser.beginTransaction();
            transactionUser.replace(R.id.contentfragment,fragmentuser);
            transactionUser.commit();

        }
    });
    rv.setAdapter(adapterAllProducts);

    Query q = mReference.orderByChild("brand").equalTo(brand);
    q.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {

            productoslist.clear();
            for (DataSnapshot Snapshot : snapshot.getChildren()
            ) {
                Product product = Snapshot.getValue(Product.class);
                productslist.add(product);
            }
            adapterAllProducts.notifyDataSetChanged();

        }

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

        }
    });
}}

I apologize for my English. It's not my mother language. If anyone can help me with this I will be very grateful with them.

The basic idea is to read from both the spinners when user tries to change his filter or when user dismisses your filter popup. This way just add the check for null/blank/Default text shown as 0th index of spinner

String text1 = mySpinner1.getSelectedItem().toString() 
String text2 = mySpinner2.getSelectedItem().toString()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM