У меня был список карт, которые представляют собой серию времени, начиная с 0:00 до 23:00 с интервалом в 15 минут, то есть [0:00, 0:15, ...., 22:45, 23:00] теперь я хочу реализовать onClick на карточках, и всякий раз, когда я нажимаю на одну карту, на карточке будет установлен флажок с установленным значением true, а когда я нажимаю на другую карту, предыдущая кликнутая карта флажок будет установлен как ложные и невидимое в то время как новый будет содержать клетчатый флажокAndroid cardview onclick implentation
public class SuggestTimeCardAdapter extends RecyclerView.Adapter<SuggestTimeCardAdapter.ViewHolder> {
private Context context;
List<SuggestTimeList> suggestTimeLists;
public SuggestTimeCardAdapter(List<SuggestTimeList> suggestTimeLists, Context context){
super();
this.suggestTimeLists = suggestTimeLists;
this.context = context;
}
@Override
public SuggestTimeCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.suggest_time_card, parent, false);
SuggestTimeCardAdapter.ViewHolder viewHolder = new SuggestTimeCardAdapter.ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final SuggestTimeCardAdapter.ViewHolder holder, int position) {
SuggestTimeList suggestTimeList = suggestTimeLists.get(position);
holder.tvSuggestTime.setText(suggestTimeList.getSuggestTime());
holder.suggest_time_card_view.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//implement the click
holder.cbSuggestTime.setVisibility(View.VISIBLE);
holder.cbSuggestTime.setChecked(true);
}
});
}
@Override
public int getItemCount() {
return suggestTimeLists.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView tvSuggestTime;
public CheckBox cbSuggestTime;
public CardView suggest_time_card_view;
public ViewHolder(View itemView) {
super(itemView);
tvSuggestTime = (TextView) itemView.findViewById(R.id.tvSuggestTime);
cbSuggestTime = (CheckBox) itemView.findViewById(R.id.cbSuggestTime);
suggest_time_card_view = (CardView) itemView.findViewById(R.id.suggest_time_card_view);
}
}
}
Теперь проблема у меня в том, что всякий раз, когда я нажимаю на одну карту, например, 0:00, то все карты с приращением 2:15 будет проверяться, так что 2:15, 4:30 и т. Д. Все проверяются, а затем прокручивая и не нажимая при этом проверенные карты внезапно перестанут проверяться и будут проверены случайные карточки. Я здесь смущен, может кто-то может помочь?
Спасибо за Ваш ответ, это решает проблему, не имея других карт проверены когда я нажимаю на одной карте. Мы должны будем определить isChecked как false в классе SuggestTimeList, так как это будет пустой объект, если мы этого не сделаем. Однако, если я щелкнул вторую карту, первая карта по-прежнему будет проверена в вашей ситуации, также после прокрутки вниз и прокрутки резервной копии проверенная карта автоматически отменяется. – JerryKo
Это не будет null, я использовал примитивный 'boolean'. По умолчанию это «ложь» :). Во-вторых, проблема, которую вы определили, может быть решена путем вызова 'notifyDataSetChanged();' после 'suggestTimeList.setChecked (true);' в прослушивателе кликов. –
Не могли бы вы показать мне, как использовать notifyDataSetChanged? Я попытался использовать его с моим адаптером suggestTimeLists, но не смог заставить его работать. Спасибо – JerryKo