两种方式:
方式一:针对简单数据类型,且数据量较少的RecyclerView
缺点:全局刷新RecyclerView,所以数据量较少可以使用。
在该Adapter中,使用下标法:
xxxActivity/xxxFragment
xxxAdapter.setOnItemClickListener(new BaseAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View v, int position) {
xxxAdapter.setSelectTitleIndex(position);
}
});
xxxAdapter.java
public void setSelectTitleIndex(int position) {
selectTitleIndex = position;
notifyDataSetChanged();
}
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
if (position == selectTitleIndex) {
holder.itemView.setSelected(true);
}else {
holder.itemView.setSelected(false);
}
}
方式二:针对复杂数据,且数据量较大,不能全局刷新
xxxAdapter.setOnItemClickListener(new BaseAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View v, int position) {
xxxAdapter.DefViewHolder viewHolder = (xxxAdapter.DefViewHolder)
xxxRl.findViewHolderForLayoutPosition(position);
viewHolder.itemData.setSelected(false);
}
注意:这里的itemData需要添加一个boolean isSelected属性值。
当adapter中的onBindViewHolder时,重新调用setData(),则会重新绘制之前的item,则会改变状态。
ps:这里的Adapter是基于BaseAdapter的属性,可见BaseAdapter去继承。