Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从2个不同的微调器加载recyclerView_Java_Android_Android Studio_Android Recyclerview_Android Spinner - Fatal编程技术网

Java 如何从2个不同的微调器加载recyclerView

Java 如何从2个不同的微调器加载recyclerView,java,android,android-studio,android-recyclerview,android-spinner,Java,Android,Android Studio,Android Recyclerview,Android Spinner,我必须做一个服装店应用程序,我正在尝试用2个微调器和一个回收视图进行过滤搜索。问题是我不知道如何过滤它。数据是从firebase下载的。问题是,我想成为一个dinamic回收商,所以如果我选择其中一个选择,我希望看到请求。所以我的问题是,我不知道如何知道这两个纺纱机是用哪一个。这两个纺纱机必须单独工作,但它们相互补充 这是我的密码 String txtBrand,txtKind; Spinner spinBrand,spinKind; RecyclerView rv; List<Strin

我必须做一个服装店应用程序,我正在尝试用2个微调器和一个回收视图进行过滤搜索。问题是我不知道如何过滤它。数据是从firebase下载的。问题是,我想成为一个dinamic回收商,所以如果我选择其中一个选择,我希望看到请求。所以我的问题是,我不知道如何知道这两个纺纱机是用哪一个。这两个纺纱机必须单独工作,但它们相互补充

这是我的密码

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

        }
    });
}}
字符串txtBrand,txtKind;
Spinner spinBrand,spinKind;
回收视图rv;
上市品牌;
列出产品清单;
AdapterAllProducts AdapterAllProducts;
公共数据库参考;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图v=充气机。充气(R.layout.filter_碎片,容器,假);
spinMarca=v.findviewbyd(R.id.Spinnerband);
spinTipo=v.findviewbyd(R.id.喷丝头种类);
rv=v.findViewById(R.id.rv);
Brands=Arrays.asList(getResources().getStringArray(R.array.Brands));
mrreference=FirebaseDatabase.getInstance().getReference(“产品”);
spinBrand.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
txtBrand=Brands.get(i);
装载机回收商(TXT品牌);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
返回v;
}
公共void loadRecycler(最终字符串Marca){
setLayoutManager(新的LinearLayoutManager(getContext());
productslist=新的ArrayList();
adapterAllProducts=新的adapterAllProducts(productslist,getActivity());
AdapteralProducts.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
产品产品=产品列表获取(rv.getChildAdapterPosition(v));
字符串pid=prod.getPid();
String name=prod.getName();
字符串desc=prod.getDescription();
String ref=prod.getReference();
float pri=(float)prod.getPrize();
int-cant=prod.getQuantity();
字符串brand=prod.getBrand();
setPid(getActivity(),pid);
setName(getActivity(),nombre);
setPrize(getActivity(),pre);
setReference(getActivity(),ref);
setDesc(getActivity(),desc);
preferenceas.setQuantity(getActivity(),cant);
Preferencias.setBrand(getActivity(),brand);
Fragment Fragment=新产品片段();
FragmentManager Manager=getFragmentManager();
FragmentTransactionUser=ManagerUser.beginTransaction();
transactionUser.replace(R.id.contentfragment,fragmentuser);
transactionUser.commit();
}
});
rv.设置适配器(适配器产品);
查询q=mReference.orderByChild(“品牌”).equalTo(品牌);
q、 addListenerForSingleValueEvent(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
productoslist.clear();
对于(DataSnapshot快照:Snapshot.getChildren()
) {
Product Product=Snapshot.getValue(Product.class);
产品列表。添加(产品);
}
adapterAllProducts.notifyDataSetChanged();
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
}}

我为我的英语道歉。这不是我妈妈冷瓜哥。如果有人能帮助我,我将非常感谢他们。

基本思想是当用户试图更改其过滤器或当用户关闭过滤器弹出窗口时,阅读
微调器。这样,只需添加对显示为
微调器的第0个索引的空/空/默认文本的检查

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

嗨,为什么要区分这两个微调器?只需使用从firebase/local列表中获取的数据(以防您随身携带所有数据),然后将该列表传递给您的RecyclerView adatpter并通知它。问题是,我希望可以选择使用其中一个过滤器或两个过滤器进行搜索。所以我需要知道选择了哪一个来显示所有具有相同令牌的产品。例如,我希望可以选择搜索“Nike”并查看其中的所有产品,如果在第二个微调器中选择“shoes”,我希望显示带有标记的所有鞋Nike@AsthaGarg另外,我希望可以选择搜索“shoes”并查看数据库中的所有shoes您可以使用String text=mySpinner.getSelectedItem().toString();从微调器获取所选文本并作为请求传递给服务器/DB查询。@Ashagarg我认为它可以工作。嗯,至少在测试过程中使用了一些产品。我不知道当我的数据库中有更多的产品时会发生什么。但我知道这是可行的