私は、成分のリストを取得してアダプタを生成するカーソルを持っています。アダプタは、チェックボックスを持つリサイクルビューに割り当てられます。私が持っている問題は、チェックボックスのセットをチェックしてスクロールダウンすると、トップから選択されたものが選択解除され、逆もまた同様です。場合によっては、3つを上から、3つを下から選択されます。最初は何も選択されていないことを確認する必要があります。また、上下にスクロールしても、選択されたものを選択したままにしておく必要があります。スクロール時にrecyclerViewのチェックボックスがオフになる
以下は、スクロール可能なリストです。ここで
私のコードです:
class RecipeDetailCursorAdapter extends CursorRecyclerViewAdapter<RecyclerView.ViewHolder> {
private int mBrownColor;
private int mGreenColor;
private int mCheckItems;
private ItemsCheckedCallback mCheckedCallback;
RecipeDetailCursorAdapter(Context context, Cursor cursor, ItemsCheckedCallback callback) {
super(context, cursor);
mCheckedCallback = callback;
mBrownColor = ContextCompat.getColor(mContext, R.color.colorTextBrown);
mGreenColor = ContextCompat.getColor(mContext, R.color.colorTextGreen);
mCheckItems = 0;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, Cursor cursor) {
String taskName = cursor.getString(cursor.getColumnIndexOrThrow(MascotHelper.RecipeTask.NAME));
((RecipeTaskHolder) viewHolder).bindView(taskName);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recipe_task_item, parent, false);
return new RecipeTaskHolder(v);
}
private class RecipeTaskHolder extends RecyclerView.ViewHolder
implements SmoothCheckBox.OnCheckedChangeListener {
SmoothCheckBox taskBox;
TextView recipeComponentName;
RecipeTaskHolder(View v) {
super(v);
taskBox = (SmoothCheckBox) v.findViewById(R.id.recipe_task_box);
recipeComponentName = (TextView) v.findViewById(R.id.recipe_component_name);
taskBox.setOnCheckedChangeListener(this);
}
void bindView(String task) {
recipeComponentName.setText(task);
}
@Override
public void onCheckedChanged(SmoothCheckBox smoothCheckBox, boolean b) {
if (smoothCheckBox.isChecked()) {
recipeComponentName.setTextColor(mBrownColor);
mCheckItems++;
} else {
recipeComponentName.setTextColor(mGreenColor);
mCheckItems--;
}
if (mCheckItems == getItemCount()) {
//Toast.makeText(mContext, "All items are checked", Toast.LENGTH_SHORT).show();
mCheckedCallback.onAllItemChecked(true);
} else {
mCheckedCallback.onAllItemChecked(false);
}
}
}
interface ItemsCheckedCallback {
void onAllItemChecked(boolean status);
}
}
任意のアイデアや提案をいただければ幸いです。
うん申し訳ありませんが、私はコードの異なるバージョンを入れている、私は今、それを編集しました。 – HShbib
解決策が見つかったら、私の解決策を確認済みのマークを付けてください。 –
私のコードを使用してチェックを行い、問題のチェックを外してください –