制作一个简单的游标适配器反映对数据库的更改

发布于 2024-12-01 02:25:39 字数 775 浏览 2 评论 0原文

在我的应用程序中,有一个 SqlLite 数据库,其中有一个包含消息列表的表。每条消息都有一个“发送者”和一个“正文”。

我有一个包含 ListView 的活动,它使用游标和游标适配器简单地显示数据库中的所有消息。以下是相关代码:

    Cursor cursor = mDbAdapter.fetchAllMessages();
    String[] from = { MessageDbAdapter.KEY_SENDER, MessageDbAdapter.KEY_BODY };
    int[] to = { R.id.TextSender , R.id.TextMessage };
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.messagerow, cursor, from, to);
    mMessageList.setAdapter(adapter);

在我的应用程序中,有一个在后台运行的服务,可以随时向数据库插入新消息(用户可能正在也可能没有查看列表活动)。

我的问题如下:如果用户正在查看列表活动并且新消息添加到数据库中,我如何使 ListView 反映此更改(显示新添加的消息)

我考虑过当消息添加到数据库时使服务触发广播。然后,当 Activity 收到此广播时,再次执行查询。但是,我担心当我知道只添加了 1 条消息时,fetchAllMessages() 效率很低,特别是因为消息可能会经常添加

In my application, there is a SqlLite database with a table containing a list of messages. Each message has a "sender" and a "body".

I have an activity containing a ListView that simply displays all of the messages in the database using a cursor and cursor adapter. Here is the relevant code:

    Cursor cursor = mDbAdapter.fetchAllMessages();
    String[] from = { MessageDbAdapter.KEY_SENDER, MessageDbAdapter.KEY_BODY };
    int[] to = { R.id.TextSender , R.id.TextMessage };
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.messagerow, cursor, from, to);
    mMessageList.setAdapter(adapter);

In my application, there is a service running in the background that can insert new messages to the database at any time (the user may or may not be looking at the list activity).

My question is the following: if the user is viewing the list activity and a new message is added to the database, how can I make the ListView reflect this change (display the newly added message)

I have considered making the service fire a broadcast when a message has been added to the database. Then, when the activity receives this broadcast, perform the query again. However, I fear that it is inefficient to fetchAllMessages() when I know that only 1 message has been added, especially since messages might be added often

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文