0

我在一个片段中有一个订单列表。在第二个片段中,我显示订单的详细信息,并使用第三个片段显示更改订单状态的按钮。

在列表中,每个订单都以背景颜色显示,指示其状态,例如绿色表示已完成交货。

在横向模式下,详细信息和列表都会显示。在纵向模式下,我使用两个单独的活动。

这一切都很好,直到我更改订单的状态。我找不到更新列表的方法。

据我了解,需要发生的是适配器需要调用其 notifyDateChanged() 方法。我试过直接从处理按钮单击的方法中调用它,我试过一个异步任务,我试过一个处理程序。我的调试方法显示调用正在发生,但列表没有更新。

有可能我正在做一些完全愚蠢的事情,但我已经检查了两次和三次。我怀疑有一些我不明白的关键要素。我希望其他人会告诉我我错过了什么。

我发布了一些代码,但显然是错误的。不确定要发布什么代码,因为我认为这更像是一个概念问题而不是编码问题。

4

2 回答 2

0

如果要更新视图,请尝试使用:

  1. 线程 + 处理程序

  2. 异步任务

于 2013-04-25T02:03:01.667 回答
0

通过其他海报的有用评论,我发现我的问题不在于适配器没有在正确的线程上获得 notifyDataChanged() 调用。我输入了证明这一点的调试代码。问题是listview项的背景是基于底层数据本身的变化,所以真正的答案是让Adapter刷新Cursor。我做了一些改变。我修改了用来通知适配器的 AsyncTask。现在 AsyncTask 获得了一个新的游标并调用了 adapter.changeCursor(cursor) 的结果。当状态改变时,AsyncTask 会从 MainActivity(它承载列表和细节片段)中调用。它也在 ListFragment 代码的 onResume() 部分中调用,因此当从详细片段返回时列表将正确更新。效果很好。

于 2013-04-28T17:27:16.570 回答