如何使用最新消息更新ListView

时间:2013-04-10 10:46:13

标签: android sqlite

目前我有以下代码从表格中显示发件人的电话号码。

public List<Message> getAllMessages() {
    final String query = "SELECT DISTINCT Sender FROM " + MYDATABASE_TABLE
            + " GROUP BY Sender";
    List<Message> messages = new ArrayList<Message>();

    Cursor cursor = sqLiteDatabase.rawQuery(query, null);

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        Message sender = cursorToMessages(cursor);
        messages.add(sender);
        cursor.moveToNext();
    }
    // Make sure to close the cursor
    cursor.close();
    return messages;
}

然后我使用ListView显示结果:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.messages);

    mySQLiteAdapter = new SQLiteAdapter(this);
    mySQLiteAdapter.openToRead();

    List<Message> values = mySQLiteAdapter.getAllMessages();

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

这只会显示发件人的号码。现在,如何使用listview显示邮件上方的发件人编号和右侧的日期?

我想创建与内置消息传递相同的列表。

我是否需要创建另一个查询以根据发件人的分组获取最新记录?

2 个答案:

答案 0 :(得分:0)

如果您想制作更复杂的ListView,显示更多数据,您将需要创建自己的自定义适配器类。

快速example

Commonsware在这个主题上有一些非常有用的例子。

答案 1 :(得分:-1)

adapterObj.notifyDatasetChanged()方法用最新消息刷新listview。