2013-04-25 34 views
0

我有一個片段的訂單列表。在第二個片段中,我顯示訂單的詳細信息,並使用第三個片段來顯示更改訂單狀態的按鈕。如何在使用分段時更改數據更改後的視圖?

在列表中,每個訂單都以背景顏色顯示其狀態,例如綠色表示已完成交貨。

在橫向模式下,顯示細節和列表。在肖像模式下,我使用兩個單獨的活動。

這一切正常,直到我改變了訂單的狀態。我無法找到更新列表的方式。

據我所知,需要發生的是適配器需要調用notifyDateChanged()方法。我試着直接從處理按鈕單擊的方法調用它,我試過了一個asynctask,並且我試過了一個處理程序。我的調試方法顯示調用正在發生,但列表不會更新。

這是可能的,我正在做一些完全骨頭的事情,但我已經雙重和三重檢查的東西。我懷疑有一些我不明白的關鍵因素。我希望別人會做,並會告訴我我錯過了什麼。

我有一些代碼發佈,但它顯然是錯誤的。不知道要發佈什麼代碼,因爲我認爲這比代碼問題更具概念性。

+0

如果'adapter'不是UI線程中的變量,這將不起作用。 – StoneBird 2013-04-25 01:41:27

+0

適配器是一個從SimpleCursorAdapter擴展的OrderListFragment。適配器用於將我的數據從遊標鏈接到ListView。 – Rben 2013-04-25 17:41:24

+0

我已經嘗試過處理程序和asynctasks,似乎都沒有工作。問題的一部分可能是被點擊的按鈕與列表顯示的按鈕不同。 – Rben 2013-04-25 17:42:29

回答

0

我發現了什麼,通過其他海報的有益的意見,是我的問題不在於適配器沒有在正確的線程上獲取notifyDataChanged()調用。我把調試代碼,證明了這一點。問題在於listview項目的背景是基於底層數據本身的變化,所以真正的答案是讓Adapter刷新Cursor。我做了一些改變。我修改了我用來通知適配器的AsyncTask。現在AsyncTask獲取一個新的遊標並調用adapter.changeCursor(遊標)和結果。當狀態改變時,AsyncTask從MainActivity中調用(它承載列表和細節片段)。它也在ListFragment代碼的onResume()部分中調用,所以當從細節片段返回時,列表將被正確更新。很棒。

0

如果要更新視圖,嘗試使用:

  1. 主題+處理器

  2. 的AsyncTask

+0

使用AsyncTask絕對是該解決方案的一部分。 Thread + Handler對於這種事情太複雜了。 – Rben 2013-04-28 17:28:55

相關問題