私はこれについて複数の質問を精査しましたが、私が探しているものを実装する方法をまだ見つけていません。フォームにある単純なカスタムcursorAdapterがあります
|textviewチェックボックス|
チェックボックスをスクロールすると、リサイクル時に状態が失われます。ブール値を格納するためにarrayListを使用しようとしましたが、それらをチェックすると、trueとして戻らないようです。
public class BrowseCardsAdapter extends CursorAdapter {
private LayoutInflater mInflater = null;
private Context mContext;
public DataBaseHelper myDbHelper = null;
public BrowseCardsAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
mContext = context;
myDbHelper = new DataBaseHelper(mContext);
try {
myDbHelper.openDataBaseForUpdate();
} catch (SQLException sqle) {
throw sqle;
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mInflater.inflate(R.layout.list_cards, parent, false);
}
@Override
public void bindView(final View view, final Context context, final Cursor cursor) {
final CheckBox cb_have = (CheckBox) view.findViewById(R.id.cb_have);
TextView cardNumber = (TextView) view.findViewById(R.id.tv_cardnumber);
final String cardNumberText = cursor.getString(cursor.getColumnIndex("CardNumber"));
final String have = cursor.getString(cursor.getColumnIndex("Have"));
cardNumber.setText(cardNumberText);
if (have.compareTo("true") == 0)
cb_have.setChecked(true);
else
cb_have.setChecked(false);
cb_have.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (cb_have.isChecked()) {
myDbHelper.addHaveToDatabase(cardNumberText, true);
cb_have.setChecked(true);
}
else {
myDbHelper.addHaveToDatabase(cardNumberText, false);
cb_have.setChecked(false);
}
myDbHelper.close();
});
}
持っている状態をデータベースに保存しているので、持っている状態をチェックしてチェックボックスを設定したいと思います。このようにして、ユーザーがアクティビティに参加すると、以前に選択したアイテムと新しい選択が表示されます。これは、新しく選択されたアイテムの状態を失う画面外のビューをスクロールするシナリオを除いて、うまく機能します。誰かが私に状態を保存する方法についてのいくつかの指針を与えることができますか?