0

私はAndroidプログラミングに不慣れです、私はあなたが私を助けてくれることを願っています私は最初にいくつかの質問があります、私はSqliteデータベースからデータを入力したいのですが、それを行うための最良の方法がわかりません..私のデータベースには時々たくさんありますのデータと私はそれからデータを取得するための最適化された方法が欲しいです。私はたくさん検索し、SimpleCursorAdapterが私の目的に適していることを見つけました、しかし私はそれを機能させる方法を見つけることができませんでした..これは私のコードです

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_read_book);
    ListView Peot_list = (ListView) findViewById(R.id.list_poet_name);
    String SDcardPath = Environment.getExternalStorageDirectory().getPath();
    String DbPath = SDcardPath + "/Tosca/" + "persian_poem.db";




    try {
        db = SQLiteDatabase.openDatabase(DbPath,null,SQLiteDatabase.CREATE_IF_NECESSARY);

        // here you do something with your database ...
        getData();

    db.close();

    }
    catch (SQLiteException e) {

    }

}



private void getData() {
    TextView txtMsg;

    txtMsg=(TextView) findViewById(R.id.txtmsg);
        try {

        // obtain a list  from DB
            String TABLE_NAME = "classicpoems__poet_contents";
            String COLUMN_ID = "poet_id";
            String COLUMN_NAME = "poet_name";
            String COLUMN_CENTURY = "century_start";
            String [] columns ={COLUMN_ID,COLUMN_NAME,COLUMN_CENTURY};

        Cursor c = db.query(TABLE_NAME, columns,null, null, null, null, COLUMN_ID);
        int theTotal = c.getCount();
        Toast.makeText(this, "Total: " + theTotal, 1).show();

        int idCol = c.getColumnIndex(COLUMN_ID);
        int nameCol = c.getColumnIndex(COLUMN_NAME);
        int centuryCol = c.getColumnIndex(COLUMN_CENTURY);


        while (c.moveToNext()) {
        columns[0] = Integer.toString((c.getInt(idCol)));
        columns[1] = c.getString(nameCol);
        columns[2] = c.getString(centuryCol);


        txtMsg.append( columns[0] + " " + columns[1] + " "
        + columns[2] + "\n" );
        }
        } catch (Exception e) {
        Toast.makeText(this, e.getMessage(), 1).show();
        }




}

これで、データベースから必要なものを読み取ることができ、txtMsgに表示されますが、リストビューに表示したいと思います。SimpleCursorAdapterをまったく定義できず、常にエラーまたは空のリストが表示されます。

4

1 に答える 1

2

後:

Cursor c = db.query(TABLE_NAME, columns,null, null, null, null, COLUMN_ID);

SimpleCursorAdapterのようなCursorAdapterをこのカーソルで作成し、アダプタをListViewに渡すだけです。何かのようなもの:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, c, 
            new String[] {COLUMN_NAME,COLUMN_CENTURY}, new int[] {android.R.id.text1, android.R.id.text2}, 0);
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);

(以下の他のコードは実際には必要ありませんCursor c = db.query(...);。)


各行がどのように表示されるかは、アダプタで使用するレイアウト(この場合)によって異なりますandroid.R.layout.simple_list_item_2。情報の表示方法をカスタマイズする場合は、独自のレイアウトを作成してください。

于 2013-03-24T16:10:10.037 に答える