如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序
Posted
技术标签:
【中文标题】如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序【英文标题】:How can I Sort my Products(items) in firebaserecyclerAdapter 【发布时间】:2021-01-06 09:16:26 【问题描述】:我正在尝试在不同的过滤器中对我的数据(产品)进行排序,例如按字母排序、按价格排序、按日期排序。
数据是从 Node 中的 firebase 实时数据库中获取的:
我已经用过 orderByChild 方法,但问题是它过滤数据而不是排序数据。
//recycelrView Setup for Product Listing
gridLayoutManager_categ = new GridLayoutManager(this, 2);
rv_categ.setLayoutManager(gridLayoutManager_categ);
rv_categ.setHasFixedSize(true);
//FirebaseRecyclerAdapter for fetching data from firebase and showing it into recylerview
databaseReference = FirebaseDatabase.getInstance().getReference().child("Products").child(rootText);
categ_options = new FirebaseRecyclerOptions.Builder<Products>().setQuery(databaseReference, Products.class).build();
categ_Adapter = new FirebaseRecyclerAdapter<Products, MyViewHolder_categAdapter>(categ_options)
@Override
protected void onBindViewHolder(@NonNull final MyViewHolder_categAdapter Holder, int i, @NonNull final Products products)
@NonNull
@Override
public MyViewHolder_categAdapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.product_layout,parent,false);
return new MyViewHolder_categAdapter(view);
;
categ_Adapter.startListening();
rv_categ.setAdapter(categ_Adapter);
如果在这种情况下不可能,那么请向我建议任何其他方法来展示我的产品。 (如使用任何其他数据库或方法等)
【问题讨论】:
【参考方案1】:如果databaseReference
指向屏幕截图中的Ghee
节点,您可以获得一个查询,该查询根据productPrice
的值对子节点进行排序:
Query query = databaReference.orderByChild("productPrice");
然后您可以将查询传递给适配器选项:
categ_options = new FirebaseRecyclerOptions.Builder<Products>().setQuery(query, Products.class).build();
【讨论】:
您好,弗兰克,感谢您的考虑。实际上,我已经在使用您建议的解决方案。我想订购按字母顺序排列的 A-Z 或 Z-A 的产品。 您共享的代码尚未订购任何东西。请确保您的问题包含您要询问的代码。 嗨弗兰克,很抱歉回复晚了。实际上我没有订购产品的代码。我想知道一种订购物品的方法。谢谢以上是关于如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序
如何从 FirebaseRecyclerAdapter 中排除项目
FireBaseRecyclerAdapter单击项目并显示数据时如何打开Fragment?
firebaserecycleradapter() 不能应用于 FirebaseRecyclerAdapter