【问题标题】:how to select and de-select an item in RecyclerView? How to Highlight selected item only in recycler view?如何在 RecyclerView 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?
【发布时间】: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. 我有一个回收站视图,我只需要选择一个项目,所以在此基础上,我必须显示一个子列表项目。

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

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

【问题讨论】:

    标签: android listview android-recyclerview background-color selecteditem


    【解决方案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 的!
    • 非常优雅和有效。这应该被标记为接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多