猿问

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

我有一个简单的问题。我有一个包含列表项的回收站视图,我可以做的是突出显示您单击的项。我的问题是我不知道如何取消选择用户单击的上一个项目,因此只能选择 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);

    }


}


森林海
浏览 223回答 2
2回答

收到一只叮咚

在您的适配器中创建一个名为 SelectedPosition 的变量。单击时,将该变量更新为adapterPosition 并重新加载recyclerView。签到populateViewHolder说:if selectedPosition == position {&nbsp;&nbsp; &nbsp;//highlighted}else {&nbsp; //set back to normal}

喵喵时光机

这是我自己的解决方案。@Override&nbsp; &nbsp; &nbsp; &nbsp; protected void populateViewHolder(CategoryViewHolder viewHolder, final&nbsp;Category model, int position) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewHolder.category_name.setText(model.getName());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (position == Common.index) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewHolder.category_layout.setSelected(true);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewHolder.category_layout.setSelected(false);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewHolder.setItemClickListener(new ItemClickListener() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View view, int position, boolean isLongClick) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Common.index = position;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; adapter.notifyDataSetChanged();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; };&nbsp; &nbsp; adapter.notifyDataSetChanged();&nbsp; &nbsp; listCategory.setAdapter(adapter);}我只是使用了一个 Common java 类,问题是用 public static int 索引解决的
随时随地看视频慕课网APP

相关分类

Java
我要回答