複数選択ダイアログが実行され、正しい値でポップアップ表示されます。ただし、保存ボタンがクリックされたときに値を設定および取得する方法を理解するのに苦労しています。
私のコードは次のとおりです。
public void addCondition(View view){
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Cursor f = db.rawQuery("select * from assetobservationtypes", null);
Log.e("Asset Helper Types:", "Cursor run");
List<CharSequence> mHelperNames = new ArrayList<CharSequence>();
final ArrayList<String> mHelperNamesID= new ArrayList<String>();
if(f.getCount() > 0) {
f.moveToFirst();
while(!f.isAfterLast()) {
mHelperNames.add(f.getString(f.getColumnIndex("Observation")));
mHelperNamesID.add(f.getString(f.getColumnIndex("AssetObsID")));
f.moveToNext();
}
}
f.close();
final List<Integer> mSelectedItems = new ArrayList<Integer>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("My Title")
.setMultiChoiceItems(mHelperNames.toArray(new CharSequence[mHelperNames.size()]), null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
if (isChecked) {
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
mSelectedItems.remove(Integer
.valueOf(which));
}
}
})
.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
txtCondition.setText("set");
txtCondition.setTextColor(Color.parseColor("#4c9226"));
count++;
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
builder.show();
}
リストが配列mSelectedItemsにあることは理解していますが、setPositiveButtonのonclickでmSelectedItems.get(0)のログを実行してテストしようとすると、アプリがクラッシュしたばかりのものが保持されていました。
これらの値を取得/保存するにはどうすればよいですか?そして、次回リストに事前入力します
トム