0

次のように、クエリの結果をスピナーに入力しようとしています。

DataBaseHelper mDbH = new DataBaseHelper(this);
Spinner combo1 = (Spinner) findViewById(R.id.combo1);
mDbH.open();
Cursor c1 = null;
c1 = mDbH.consulta4();
startManagingCursor(c1);
if(c1.moveToFirst() == false){
  Log.e("cursor c ","vacio");
  c1.close();
  mDbH.close();
}else{
  SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c1,new String[] {"nombre"},new int[] {android.R.id.text1});
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  combo1.setAdapter(adapter);
  c1.close();
  mDbH.close();
}

しかし、アプリをテストすると、うまくいきません! LogCat にエラーは表示されません。私はここでちょっと迷っています!

何か案は?

4

2 に答える 2

1

カーソルを SimpleCursorAdapter に渡した後、カーソルを閉じています。これにより、カーソルがデータを解放し、使用できなくなります。そのため、SimpleCursorAdapter では使用できなくなりました。コードのelse部分で次の行を削除します(setAdapterの後):

c1.close();

そしてさらに試みる。

于 2012-10-24T15:25:44.940 に答える
0

startManagingCursor(c1)すでにクローズを処理しています。ここで、アダプターはオブジェクトを画面にレンダリングするためにカーソルを必要とするため、閉じないでください。

于 2012-10-24T15:32:35.327 に答える