2013-06-11 37 views
0

適配器這是我有:如何更新另一種觀點認爲

步驟1.有一個ListView,顯示項目的用戶可以評價。這是一個Fragment。任何已經評分的項目都是粗體。

第2步。如果用戶點擊未評分項目,它將當前列表保留在backstack中並打開新的Fragment;在新Fragment他們現在可以評價項目。

這就是我需要:

第3步:一旦他們打後退按鈕,我想列表項到現在大膽地反映變化。

如果這不是Fragment,我認爲startActivityForResult()將是答案;但不知道如何用當前(Fragment)設置完成此操作?

補充說明:ListViewadapterArrayList<Review>。當然,每行在Review對象中都有屬性。一個房產是一個叫做wasRated的嬰兒車,它可以是01;如果此參數爲1,則表示用戶對該項目進行評分,則列表行將變爲粗體以反映此情況。這是我想要的動態。

+0

那麼你想要做什麼是當'片段2'關閉時重新呈現'片段1'列表?我理解了這些問題嗎? –

+0

@NeilTownsend Bascially是的;我想只更新行,如果可能的話,不要重置'listview',這樣用戶必須向下滾動。 – KickingLettuce

+0

不會adapter.notifyDataSetChanged()做的伎倆? – Guardanis

回答

1

Android developer page on FragmentsCreating event callbacks to the activity部分表明,從FragmentActivity創建回調比較容易。

更一般地,您可以從Fragment確定Activity。假設:

  1. 您有啓動兩個片段的活性MyTopNotchActivity
  2. 存在活性的方法needToReRender()其觸發重新描繪

在片段2:

MyTopNotchActivity activity = (MyTopNotchActivity) getActivity().findViewById(R.id.list); 
activity.needToReRender(); 

的活動然後可以告訴Fragment 1重新列出該列表。顯然你可以改進needToReRender來接收有關確切需要重新渲染的信息。

警告:如果片段是由不同的活動創建的,這將不起作用。

+0

是的,他們都在同一個'FragmentActivity'下;所以我看到你在說什麼...讓我試試這個 – KickingLettuce

+0

所以我明白如何從片段#2調用回調方法。但是,一旦我在回調方法中,它必須立即調用片段#1中的方法來更改列表行;在我的所有測試中,我似乎無法在片段#1變化的同時對片段#1進行更改,而片段#2處於活動狀態(並且字面上位於頂部)。 – KickingLettuce

+0

也許你需要在片段1中的'onResume'中檢測到的片段1中設置一個標誌,這樣當它獲得屏幕後,它會重新渲染? –