如何在 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 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ItemTouchHelper 时如何在拖动时取消对 RecyclerView 中项目的拖动?