0

と を使用する他の 2 つのアプリがListViewありSimpleCursorAdapterます。コードはほぼ同じです。そこで、3 つ目のアプリで再度使用することにしました。機能しておらず、解決策が見つかりません。

問題は、リストに何も表示されないことです。ボタンを使用してデータベースに情報を追加します。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>

story_row 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 に答える