Как прочитать более одного столбца в базе данных курсором и заполнить список? - PullRequest
1 голос
/ 01 февраля 2012

У меня есть таблица с именем 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 AND dbHelper.KEY_DATE не могут быть обработаны одним TextView. Поэтому мне пришлось добавить новый TextView для обработки второй части моей строки "from".

1 Ответ

1 голос
/ 01 февраля 2012

Мне кажется, проблема в том, что вы пытаетесь сопоставить два столбца (из) только с одним контейнером (до) здесь:

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), где вы можете хранить свои значения из db.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...