0

我还有另外两个使用 aListViewSimpleCursorAdapter. 代码几乎完全相同。所以我决定在第三个应用程序上再次使用它。它不起作用,并且找不到解决方案。

问题是列表中没有显示任何内容。我使用一个按钮将信息添加到数据库中。我在游标上记录一个计数,Log.d("",storyCur.count()+"");以确保数据库正在更新,并且确实如此。

相关数据库代码:

public Cursor fetchAll(){
  return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_DETAILS,KEY_TITLE},
  null, null, null, null, null);
}

其余相关代码:

ListView lv;
DbAdapter db;

public void onCreate(Bundle savedInstanceState) {
...
   lv = (ListView) findViewById(R.id.list);
   db = new DbAdapter(this);
....
}

public void onResume(){
    super.onResume();
    db.open();
    fillData();
}

private void fillData(){
    Cursor storyCur = db.fetchAll();
    startManagingCursor(storyCur);

    String[] from = new String[]{DbAdapter.KEY_LOC};
    int[] to = new int[]{R.id.row1};

   SimpleCursorAdapter stories = 
      newSimpleCursorAdapter(this,R.layout.story_row,storyCur,from,to);

   lv.setAdapter(stories);

    storyCur.close();
}

主要 XML:

  <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:onClick="onClick" />

  <ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
  </ListView>

</LinearLayout>

故事行 XML:

<?xml version="1.0" encoding="utf-8"?>



<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/row1"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:padding="10dp"
  android:background="#444444" />
4

1 回答 1

1

您应该删除对光标上 .close() 的调用。SimpleCursorAdapter 需要打开光标才能运行,并会为您调用光标上的 close()。

于 2012-05-23T21:32:45.607 回答