私は15分の間隔で0:00から23:00までの一連の時間であるカードビューのリストを作成しました。これは[0:00、0:15、 22:45、23:00] onClickをカードに実装したいのですが、1つのカードをクリックするたびに、チェックボックスがチェックされた状態でセットされ、別のカードをクリックすると、以前にクリックされたカード新しいものがの増分で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);
}
}
}
今私が持っている問題は、私は、たとえば夜12時のために、一枚のカードをクリックしたときに、その後、すべてのカードを確認するチェックボックスが含まれていますしながら、チェックボックスが偽と不可視に設定されます2:15がチェックされ、2:15、4:30などがすべてチェックされ、次にスクロールしながらチェックしたカードが突然チェックされなくなり、ランダムなカードがチェックされます。私はここで混乱しています、誰かが助けてくれますか?
おかげで、これは私が一枚のカードをクリックしたときにチェック他のカードを持っていないために問題を解決します。 SuggestTimeListクラスでisCheckedをfalseとして定義する必要があります。なぜなら、そうしないとnullオブジェクトになるからです。しかし、もし私が2番目のカードをクリックすると、最初のカードはあなたの状況でチェックされ、スクロールダウンしてスクロールした後にも、チェックされたカードは自動的にチェックされなくなります – JerryKo
nullにはならず、これはデフォルトで 'false'です:)。第2に、あなたが特定した問題は、クリックリスナーで 'suggestTimeList.setChecked(true);の後に' notifyDataSetChanged(); 'を呼び出すことで解決できます。 –
notifyDataSetChangedの使い方を親切に教えてもらえますか?私はアダプタのsuggestTimeListsでそれを使用しようとしましたが、動作させることができませんでした。ありがとうございました – JerryKo