【问题标题】:Android Firebase Recyclerview - How to deselect previous selected item?Android Firebase Recyclerview - 如何取消选择以前选择的项目?
【发布时间】:2018-10-27 15:00:23
【问题描述】:

我有一个简单的问题。我有一个包含列表项的回收站视图,我能做的就是突出显示您单击的项目。我的问题是我不知道如何取消选择用户单击的上一个项目,因此只能选择一项。

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);
    }

}

【问题讨论】:

  • 如果你点击它会进入下一个活动?
  • 不是一个包含类别的列表,我需要知道用户想要向其中添加问题的特定类别的 ID
  • 问题解决了吗?请回复@。
  • @Alex Mamo 我在这里做了是的

标签: java android firebase android-recyclerview listitem


【解决方案1】:

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

签入populateViewHolder 说:

if selectedPosition == position { 
   //highlighted
}
else {
  //set back to normal
}

【讨论】:

    【解决方案2】:

    这是我自己的解决方案。

    @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 类,并通过公共静态 int 索引解决了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-10-29
      • 2014-04-05
      • 2016-11-14
      相关资源
      最近更新 更多