为了账号安全,请及时绑定邮箱和手机立即绑定

Android Firebase Recyclerview - 如何取消选择上一个选定的项目?

Android Firebase Recyclerview - 如何取消选择上一个选定的项目?

森林海 2021-12-10 16:23:22
我有一个简单的问题。我有一个包含列表项的回收站视图,我可以做的是突出显示您单击的项。我的问题是我不知道如何取消选择用户单击的上一个项目,因此只能选择 1 个项目。private void loadCategories() {    adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(            Category.class,            R.layout.categoryaddquestions_layout,            CategoryViewHolder.class,            categories    ) {        @Override        protected void populateViewHolder(CategoryViewHolder viewHolder, final Category model, int position) {            viewHolder.category_name.setText(model.getName());            viewHolder.setItemClickListener(new ItemClickListener() {                @Override                public void onClick(View view, int position, boolean isLongClick) {                    view.setSelected(false);                }            });        }    };    adapter.notifyDataSetChanged();    listCategory.setAdapter(adapter);}这是我使用的视图持有者public class CategoryViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{    public TextView category_name;    public ImageView category_image;    public LinearLayout category_layout;    private ItemClickListener itemClickListener;    public CategoryViewHolder(View itemView) {        super(itemView);        category_layout = itemView.findViewById(R.id.categoryaddquestion_layout);        category_image = itemView.findViewById(R.id.category_image);        category_name =  itemView.findViewById(R.id.category_name);        itemView.setOnClickListener(this);    }    public void setItemClickListener(ItemClickListener itemClickListener) {        this.itemClickListener = itemClickListener;    }    @Override    public void onClick(View view) {        itemClickListener.onClick(view,getAdapterPosition(),false);    }}
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

在您的适配器中创建一个名为 SelectedPosition 的变量。单击时,将该变量更新为adapterPosition 并重新加载recyclerView。


签到populateViewHolder说:


if selectedPosition == position { 

   //highlighted

}

else {

  //set back to normal

}


查看完整回答
反对 回复 2021-12-10
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

这是我自己的解决方案。


@Override

        protected void populateViewHolder(CategoryViewHolder viewHolder, final 

Category model, int position) {


            viewHolder.category_name.setText(model.getName());

            if (position == Common.index) {

                viewHolder.category_layout.setSelected(true);

            } else {

                viewHolder.category_layout.setSelected(false);


            }




            viewHolder.setItemClickListener(new ItemClickListener() {

                @Override

                public void onClick(View view, int position, boolean isLongClick) {


                    Common.index = position;

                    adapter.notifyDataSetChanged();

                }

            });

        }

    };

    adapter.notifyDataSetChanged();

    listCategory.setAdapter(adapter);

}

我只是使用了一个 Common java 类,问题是用 public static int 索引解决的


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 222 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号