値を復元するための解決策を見つけました。 populateFields() の私の新しいバージョンを参照 してください わかりましたので、ここにある Spinner と SQlite の投稿をすべて読んでいますが、探しているものに対する適切な答えが見つからないようですので、投稿しますこのシナリオ。私のアプリには2つの画面があり、デバイスでsqliteデータベースを使用して、editTextsの名前と重みフィールドを次のような文字列として保存します
String eName = name.getText().toString();
String eWeight = weight.getText().toString();// where name and weight are EditTexts
そして、私は次のように2つのスピナーを持っています
String eReps = spinReps.getSelectedItem().toString();
String eSets = spinSets.getSelectedItem().toString();
次に、これを呼び出してデータベースに追加します
long id = mDbHelper.createExercise(eName, eWeight, eReps, eSets);
ここに私の問題があります。誰かが新しいエクササイズを作成することを選択すると、スピナーに誤って入力しようとしているためにアプリがクラッシュします。これが私が現在持っているものです。
private void populateFields(){
if(mRowId != null){ // where mRowId is the selected row from the list
Cursor exercise = mDbHelper.fetchExercise();
name.setText(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_NAME)));
weight.setText(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_WEIGHT)));
// this is the part that i need help with, I do not know how to restore
// the current items spinner value for reps and sets from the database.
spinReps.setSelection(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_REPS)));
spinSets.setSelection(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_SETS)));
}
リストアイテムをデータベースから現在の値とともに復元するには、ある種のアダプターを使用する必要があると思いますが、方法がわかりません。
誰かがこれで私を助けてもらえますか???
**以下は私の解決策です**
ArrayAdapter の repsAdapter、spinAdapter を onCreate() から移動してから、この新しい populateFields() を実装する必要がありました。
private void populateFields(){
if(mRowId != null){
Cursor exercise = mDbHelper.fetchExercise(mRowId);
// same as before
name.setText(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_NAME)));
// get the string for sReps and sSets from the database
String sReps = exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_REPS));
String sSets = exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_SETS));
// use the strings to get their position in my adapters
int r = repsAdapter.getPosition(sReps);
int s = setsAdapter.getPosition(sSets);
// set their returned values to the selected spinner Items
spinReps.setSelection(r);
spinSets.setSelection(s);
// same as before
weight.setText(exercise.getString(exercise.
getColumnIndexOrThrow(ExerciseDbAdapter.KEY_WEIGHT)));
}
}