선택이 되었는지 아닌지 알 수 있도록 상태를 괸리하셔야 할 것 같네요. 현재는 해당 포지션이 눌렀느냐만 알 수 있기 때문에 구분해서 처리할 수가 없습니다.
SparseBooleanArray를 사용하세요.
https://developer.android.com/reference/android/util/SparseBooleanArray
선택된 포지션을 키값으로 하고 선택시에는 해당 값을 토글 시키시면 될 것 같네요. 아래코드를 참고해서 어떻게 토클 상태를 관리하는지 이해하신 다음 적절하게 적용하시기 바랍니다. 코드는 단순히 머리 속에서 나온 것이므로 완전하지 않습니다.
// Adapter Item class (님의 소스에서는 확인이 안되므로 임의로 가정)
public class ListItem {
private boolean selected; // 추가
// getter, setter 추가
}
// Adapter class
public class MyAdapter ... {
public interface ItemClickListener {
void onItemClicked(int position);
}
private List<ListItem> items;
private SparseBooleanArray selectedState = new SparseBooleanArray();
...
private void selectItemAt(int position) {
for (int i =0 i < items.size; i++) {
if (i == position) {
boolean isSelected = !selectedState.get(position)
selectedState.put(position, isSelected);
} else {
selectedState.put(i, false);
}
}
nofifyDataSetChanged();
}
private ListItem getItem(int position) {
return listItem.setSelected(selectedState.get(position));
}
@Overrid
public onCreateViewHolder(ViewGroup parent, int viewType) {
View ItemView = LayouInflater.from(parent.getContext(),....);
return new MyViewHolder(itemView, new ItemClickListener() {
@OVerride
public void onItemClicked(int position) {
selectItemAt(position);
}
});
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.bind(getItem(position));
}
}
// ViewHolder
public class MyViewHolder ... {
private View ll_carBookList_options;
private TextView tv_carBook_list_option_item;
public MyViewHolder(View itemView, MyAdapter.ItemClickListerner listener) {
super.MyViewHolder(view);
// TODO : findViewById추가
// ll_carBookList_options -> itemView??
ll_carBookList_options.setOnClickListener(v -> {
listener.onItemClicked(hoder.getBindingAdpaterrPosition());
});
}
public void bind(ListItem item) {
if(item.isSelected){
ll_carBookList_options.setBackground(Status_DataBridge.getMainContext().getDrawable(R.drawable.carbook_list_option_select));
tv_carBook_list_option_item.setTextColor(Status_DataBridge.getMainContext().getColor(R.color.clr_ffffff_20213e));
}else {
// 흰색 설정
}
}
}
아이템을 선택할 때 selectitemAt을 호출하고 notifyDataSetChanged를 호출하면 될 것 같습니다.