我有一个饮料类别(7个项目)的回收商视图,我希望所有7个项目来动态改变位置的基础上,客户最喜欢的饮料保存在收藏夹表中。
这怎么可能呢?
我当前的代码:
private void loadMenu() {
Query query = category.orderByChild("views");
adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(
Category.class,
R.layout.menu_item,
MenuViewHolder.class,
query
) {
@Override
protected void populateViewHolder(final MenuViewHolder viewHolder, final Category model, int position) {
viewHolder.txtMenuName.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage())
.into(viewHolder.imageView);
viewHolder.txtViews.setText(model.getViews());
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
//No of click
count++;
category.child(adapter.getRef(position).getKey()).child("views").setValue(count);
//Get CategoryId and send to new Activity
Intent drinkList = new Intent(Home.this, DrinkList.class);
//Because CategoryId is key, so we just get key of this item
drinkList.putExtra("CategoryId",adapter.getRef(position).getKey());
startActivity(drinkList);
}
});
}
};
adapter.notifyDataSetChanged();
recycler_menu.setAdapter(adapter);
}发布于 2017-12-10 03:35:51
如果我没弄错的话,您想要根据字段对类别进行排序,如is favorite或用户对类别的喜好程度,如果是这样的话,为了获得排序和过滤的结果,您必须将一个查询传递到FirebaseRecyclerAdapter构造函数中,在该构造函数中您现在正在传递一个DatabaseReference。因此,向适配器添加一个接受Query构造函数
public MyFireAdapterDiasFiestaRecyclerView(
Class<DiaFiestaMeta> modelClass,
int modelLayout,
Class<MyFireViewHolder> viewHolderClass,
Query query) {
...然后用一个排序和过滤的查询调用它:
adapter = new MyFireAdapterDiasFiestaRecyclerView(
DiaFiestaMeta.class,
layout_that_you_use,
MyFireViewHolder.class,
ref.orderByChild("property_to_sort_and_filter_on").equalTo("value_to_filter_on")
);orderByChild()会将你的查询按升序排序,以便在使用orderByChild()时进行降序查询。如果你正在使用DatabaseReference填充FirebaseRecyclerAdapter,这是一个很好的解决方案:
在FirebaseRecyclerAdapter声明中,覆盖getItem()函数,就像我们这样:
@Override
public User getItem(int position) {
return super.getItem(getItemCount() - 1 - position);
}https://stackoverflow.com/questions/47732270
复制相似问题