ユーザーが習慣をリストし、その習慣を再び実行するまで待機する目標タイマーを作成できるアプリがあります。目標作成アクティビティには、選択できる習慣のスピナーがあります。私はそれを移入するために以下を使用しています:
protected void onCreate(Bundle bundle) {
⋮
mHabitSelect = (Spinner) findViewById(R.id.habit);
String[] queryCols = new String[] { HabitTable.TABLE_HABIT + "." + HabitTable.COLUMN_ID, HabitTable.COLUMN_NAME };
String[] from = new String[] { HabitTable.COLUMN_NAME };
int[] to = new int[] { R.id.label };
Cursor cursor = getContentResolver().query(MyHabitContentProvider.HABITS_URI, queryCols, null, null, null);
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.habit_select_row, cursor, from, to, 0);
mHabitSelect.setAdapter(mAdapter);
mHabitSelect.setOnItemSelectedListener(this);
}
メソッドにはonItemSelected
、データベース ID と思われる id パラメータがあります。
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
long databaseId = id;
}
これにより、データベースに保存する値が得られますが、編集インターフェイスをロードするときに、データベースから保存された習慣にスピナーを設定するメソッドが必要です。
private void fillData(Uri uri) {
String[] projection = { GoalTable.COLUMN_HABIT_ID, GoalTable.COLUMN_TIME, GoalTable.TABLE_GOAL + "." + GoalTable.COLUMN_DESCRIPTION };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int habitId = cursor.getInt(cursor.getColumnIndexOrThrow(GoalTable.COLUMN_HABIT_ID));
//mHabitSelect.setSelection(habitId);
⋮
}
}
結果を繰り返し処理して、どのデータベース ID がスピナーのどの位置にあるかを把握する必要はありませんか?