我在一个片段中有一个订单列表。在第二个片段中,我显示订单的详细信息,并使用第三个片段显示更改订单状态的按钮。
在列表中,每个订单都会显示一个背景颜色,指示其状态,例如绿色表示已完成交货。
在横向模式下,会显示详细信息和列表。在纵向模式下,我使用两个单独的活动。
这一切都运行正常,直到我更改订单的状态。我找不到让列表更新的方法。
据我了解,需要发生的是适配器需要调用其notifyDateChanged()方法。我试过直接从处理按钮点击的方法调用它,我尝试了一个asynctask,我尝试了一个处理程序。我的调试方法显示调用正在进行,但列表没有更新。
我可能正在做一些完全蠢蠢欲动的事情,但我已经对事情进行了双重和三重检查。我怀疑有些关键因素我不明白。我希望别人能做,并告诉我我错过了什么。
我发布了一些代码,但显然是错误的。不确定要发布什么代码,因为我认为这更像是一个概念而不是编码问题。
答案 0 :(得分:0)
如果要更新视图,请尝试使用:
线程+处理程序
的AsyncTask
答案 1 :(得分:0)
我通过其他海报的有用评论发现,我的问题不是适配器没有在正确的线程上获得notifyDataChanged()调用。我输入了证明这一点的调试代码。问题是listview项目的背景是基于底层数据本身的变化,所以真正的答案是让适配器刷新Cursor。我做了一些改变。我修改了我用来通知适配器的AsyncTask。现在,AsyncTask获取一个新游标并使用结果调用adapter.changeCursor(cursor)。当状态发生变化时,从MainActivity(托管列表和详细信息片段)调用AsyncTask。它也在ListFragment代码的onResume()部分中调用,因此当从详细信息片段返回时,列表将被正确更新。效果很好。