Android и SQLite: как отобразить значение нескольких столбцов

Я надеюсь, что вы, ребята, можете помочь решить мою проблему.

моя проблема в том, что я не могу получить несколько значений столбца. В моей базе данных содержится 4 столбца (id, namaStation, ticket, masa). щас программа только отображала значение namaStation. Это может быть из-за метода toString() в классе Comment, потому что он возвращает только 1 значение (namaStation). может мне помочь??

Это моя программа. ##

1. Вызовите запрос.

`public void onClick (просмотр представления) {

    @SuppressWarnings("unchecked")
    ArrayAdapter<Comment> adapter = (ArrayAdapter<Comment>) getListAdapter();
    Comment comment = null;

    switch (view.getId()) {
    case R.id.add:

        List<Comment> values = datasource.query("Kelana Jaya");

        adapter = new ArrayAdapter<Comment>(this, android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

        break;`

2. Запрос.

    @SuppressWarnings("static-access")
public List<Comment> query(String namaStation){

    //List<Comment> comments = new ArrayList<Comment>();
database = dbHelper.getReadableDatabase();
    List<Comment> comments = new ArrayList<Comment>();

    Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
            allColumns,  MySQLiteHelper.COLUMN_namaStation+"=?",new String[]{namaStation}, null, null, null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
    //  Comment comment = cursorToComment(cursor);

        Comment comment = new Comment();
        comment.setId(cursor.getLong(0));
        comment.setNamaStation(cursor.getString(1));
        comments.add(comment);
        comment.setTicket(cursor.getString(2));
        comments.add(comment);
        cursor.moveToNext();
    }
    // Make sure to close the cursor
    cursor.close();
    return comments;

3. Класс Comment

public class Comment {
private long id;
public String namaStation;
public String ticket;
public String masa;
public String comment;
public int x;


public Comment(){



}
public Comment(long id, String namaStation, String ticket, String masa){

    this.id=id;
    this.namaStation=namaStation;
    this.ticket=ticket;
    this.masa=masa;

}
public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;

}

public String getNamaStation() {
    return namaStation;

}

public void setNamaStation(String comment) {
    this.namaStation = comment;


}


public String getTicket() {
    return ticket;
}

public void setTicket(String comment) {
    this.ticket = comment;

}

public String getMasa() {
    return masa;
}

public void setMasa(String comment) {
    this.masa= comment;
}
// Will be used by the ArrayAdapter in the ListView
public String toString() {

    return ticket;


}

}

Дисплей (макет неправильный, потому что я еще не настроил его .. :) )

экран


person Azwan Darmongin    schedule 24.03.2012    source источник


Ответы (2)


Вы должны сделать свой собственный ArrayAdapter. Вы можете предоставить собственный макет для ваших товаров.

Таким образом, вы можете разместить любой столбец, где хотите.

Просто объединить все поля в toString — это не «высокая технология». В простых случаях может быть достаточно

Может быть полезна следующая ссылка: http://www.vogella.de/articles/AndroidListView/article.html#listview_adapterintro

person stefan bachert    schedule 24.03.2012

Вы добавляете comment дважды в список

    comments.add(comment);
    comment.setTicket(cursor.getString(1));
    comments.add(comment);

примечание: можно упростить

cursor.moveToFirst();
while (!cursor.isAfterLast()) {
    // do stuff
    cursor.moveToNext();
}

к этому

while (cursor.moveToNext()) {
    // do stuff
}

И фактическая проблема, что вы видите только имя, заключается в том, что вы используете неправильный адаптер. Вам нужно создать свой собственный. Либо на основе ArrayAdapter, если есть причина преобразовать результат запроса в массив, либо напрямую с помощью CursorAdapter.

вот пример, который вы можете использовать.

person zapl    schedule 24.03.2012