首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据用户喜好动态更改回收者视图中的项目

如何根据用户喜好动态更改回收者视图中的项目
EN

Stack Overflow用户
提问于 2017-12-10 03:24:04
回答 1查看 290关注 0票数 0

我有一个饮料类别(7个项目)的回收商视图,我希望所有7个项目来动态改变位置的基础上,客户最喜欢的饮料保存在收藏夹表中。

这怎么可能呢?

Drink categories table

Favorites table

我当前的代码:

代码语言:javascript
复制
    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);
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-10 03:35:51

如果我没弄错的话,您想要根据字段对类别进行排序,如is favorite或用户对类别的喜好程度,如果是这样的话,为了获得排序和过滤的结果,您必须将一个查询传递到FirebaseRecyclerAdapter构造函数中,在该构造函数中您现在正在传递一个DatabaseReference。因此,向适配器添加一个接受Query构造函数

代码语言:javascript
复制
public MyFireAdapterDiasFiestaRecyclerView(
    Class<DiaFiestaMeta> modelClass, 
    int modelLayout, 
    Class<MyFireViewHolder> viewHolderClass, 
    Query query) {
    ...

然后用一个排序和过滤的查询调用它:

代码语言:javascript
复制
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()函数,就像我们这样:

代码语言:javascript
复制
@Override
public User getItem(int position) {
        return super.getItem(getItemCount() - 1 - position);
}

参考:Sort a FirebaseRecyclerAdapter

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47732270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档