如何通过游标读取数据库中的多个列并填入列表?

时间:2012-02-01 14:32:40

标签: android sqlite cursor

我有一张名为tbl_homework的表。有3列称为“_id”,“hw”和“hwdate”。 现在我想读出“hw”和“hwdate”。所以我喜欢这个列表视图中的同一行。 我不得不说它没有崩溃或错误。它只是没有显示日期...... 下图将告诉你我的意思:

enter image description here

以下是代码片段,告诉您我是如何尝试的:

    private Button.OnClickListener add_hw = new Button.OnClickListener(){
    public void onClick(View arg0) {
        mDbHelper.open_database_rw();
        String txt_insert_hw = insert_hw.getText().toString(); 

        if(txt_insert_hw.equals("")){
            doMessage("Keine Eingabe!");
        }else{
            String date_picker_message= date_pick.getDayOfMonth() + "/" + (date_pick.getMonth()+1) + "/" + date_pick.getYear();
            final String INSERT_HW = "INSERT INTO tbl_homework ('hw', 'hwdate') VALUES ('"+txt_insert_hw+"', '"+date_picker_message+"')";
            db.execSQL(INSERT_HW);
            insert_hw.setText("");
            fillData();
        }
    }
};


    private void fillData() {
    // Get all of the notes from the database and create the item list

    Cursor c = mDbHelper.fetchAllNotes();

    startManagingCursor(c);

    String[] from = new String[] { dbHelper.KEY_TITLE, dbHelper.KEY_DATE};
    int[] to = new int[] {R.id.txt_notes_row};

    // Now create an array adapter and set it to display using our row
    SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
        setListAdapter(notes);
    }

在mDbHelper:

    public Cursor fetchAllNotes() {
    return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_DATE}, null, null, null, null, null);
}

这个问题的解决方法:(从评委会收到)

    String[] from = new String[] { dbHelper.KEY_TITLE, dbHelper.KEY_DATE};
    int[] to = new int[] {R.id.txt_notes_row, R.id.txt_notes_row2};

我不得不添加一个新的TextView。 dbHelper.KEY_TITLE和dbHelper.KEY_DATE不能由一个TextView处理。所以我不得不添加一个新的TextView来处理我的字符串“from”的第二部分。

1 个答案:

答案 0 :(得分:1)

我认为问题是你尝试在这里匹配两个列(从)到一个容器(到):

String[] from = new String[] { dbHelper.KEY_TITLE, dbHelper.KEY_DATE};
int[] to = new int[] {R.id.txt_notes_row};

您应在列表行中指定存储值的两个字段。即你的R.id.txt_notes_row应该包含两个小部件(例如,R.id.txtview1和R.id.txtview2),你可以在这里存储你的值。