不用遍历实现单选的另类写法
记录上一次的单击位置
public class SendLocationAdapter extends BaseQuickAdapter<NoticeList, BaseViewHolder> {
private int lastPosition = -1;
private TextView lastTv;
public SendLocationAdapter(int layoutResId, @Nullable List<NoticeList> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, NoticeList item) {
final TextView tv_send_location = helper.getView(R.id.tv_send_location);
helper.setText(R.id.tv_send_location, item.Content);
final int position = helper.getLayoutPosition();
setSelected(lastPosition == position, tv_send_location);
tv_send_location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (lastPosition != position) {
setSelected(false, lastTv);
setSelected(true, tv_send_location);
lastPosition = position;
}
}
});
}
private void setSelected(boolean isSelected, TextView tv) {
if (tv != null) {
tv.setTextColor(ContextCompat.getColor(mContext, isSelected ? R.color.colorText : R.color.colorTextDarkerGray));
tv.setCompoundDrawablesWithIntrinsicBounds(isSelected ? R.drawable.ic_location_red_20dp : R.drawable.ic_location_gray_20dp,
0, isSelected ? R.drawable.icon_image_select : R.drawable.icon_image_un_select, 0);
if (isSelected) {
lastTv = tv;
}
}
}
}