如何在 RecyclerView 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?

Posted

技术标签:

【中文标题】如何在 RecyclerView 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?【英文标题】:how to select and de-select an item in RecyclerView? How to Highlight selected item only in recycler view? 【发布时间】:2018-11-25 02:39:06 【问题描述】:
@Override
    public void onBindViewHolder(final mainscreenspecializationadap.MyViewHolder holder, final int positionz) 
        this.position = holder.getAdapterPosition();
        final specializationpojo album = albumList.get(holder.getAdapterPosition());
        holder.txtspecs.setText(album.getSplztnname());
        holder.imgspecs.setImageResource(album.getIcon());

    holder.linelayout.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            row_index=positionz;
            album.setOpened(!album.isOpened());
            notifyDataSetChanged();

        
    );
    if(positionz==row_index)
        holder.imageView.setBackground(mContext.getResources().getDrawable(R.drawable.white_circle_background));
        holder.txtspecs.setSelected(true);
        if (type==1)
        
            onClick.onSelected(row_index,album.isOpened(),album.isClosed());
        
        else if(type==2)
           onClick.onSpecialisationSelected(album.getSplzcode(),album.getCount());
        
    
    else
    
        holder.txtspecs.setSelected(false);
        holder.imageView.setBackground(mContext.getResources().getDrawable(R.drawable.green_background));
    


    我有一个回收站视图,我只需要选择一个项目,所以在此基础上,我必须显示一个子列表项目。

    现在的问题是当我取消选择该项目时,下面的子列表项目应该被隐藏。

    请给我一个答案,我会感谢你的答案。

【问题讨论】:

【参考方案1】:

这是满足您要求的解决方案

    public class AdapterClass extends RecyclerView.Adapter<AdapterClass.ViewHolder> 
        private int selected_position = -1;

        @Override
        public void onBindViewHolder(AdapterClass.ViewHolder holder, final int position) 
            if (selected_position == position) 
                // do your stuff here like
                //Change selected item background color and Show sub item views

             else 
                  // do your stuff here like
                  //Change  unselected item background color and Hide sub item views
            
  // rest of the code here

    holder.linelayout.setOnClickListener(new View.OnClickListener() 
          @Override
          public void onClick(View view) 
              if(selected_position==position)
                        selected_position=-1;
                        notifyDataSetChanged();
                        return;
                    
                    selected_position = position;
                    notifyDataSetChanged();

            
        );

    //rest of the code here

     



【讨论】:

在我能找到的所有其他答案中,这个确实有效。谢谢! 我很高兴它对你有用。你可以随时问我问题。快乐编码 真的很好。这是我的另一个question,如果你想看看,它也是关于 RecyclerView 的! 非常优雅和有效。这应该被标记为接受的答案。

以上是关于如何在 RecyclerView 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?的主要内容,如果未能解决你的问题,请参考以下文章

滚动时,在recyclerView中取消选中复选框

如何在 RecyclerView 中选择位置?

Android RecyclerView 选择第一个项目

使用 ItemTouchHelper 时如何在拖动时取消对 RecyclerView 中项目的拖动?

如何以编程方式从“recyclerView”适配器中选择底部导航菜单?

在表格视图中选择新行时如何取消选择选定的行?