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 回答