2015-10-09 46 views
2

我有Messanger應用程序,它具有包含2個片段的主/細節流佈局。我使用了Android Studio提供的模板。 當ListFragment在前臺並且新用戶登錄時,ListView不會立即更新,並且用戶不會出現在列表中。 當我選擇不同的活動並返回到ListFragment後,列表被更新。如何更新片段?

這是我的數據存儲的地方。如果新用戶登錄addUser方法被調用,這會將用戶添加到List和Map中。

public static List<ChatContent> ITEMS = new ArrayList<ChatContent>(); 

public static Map<String, ChatContent> ITEM_MAP = new HashMap<String, ChatContent>(); 

protected static void addUser(ChatContent userChatContent) { 
    ITEMS.add(userChatContent); 
    ITEM_MAP.put(userChatContent.user, userChatContent); 
} 

這就是我如何在ListFragment的onCreate方法中設置listAdapter。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ArrayAdapter arrayAdapter = new ArrayAdapter<ChatData.ChatContent>(
      getActivity(), 
      android.R.layout.simple_list_item_activated_1, 
      android.R.id.text1, 
      ChatData.ITEMS); 

    setListAdapter(arrayAdapter); 

} 

FYI:當我在detailsFragment和新的聊天消息到達同樣的事情發生了:該消息不會出現,除非我離開活動回來。

+0

我米過於面臨同樣的問題... http://stackoverflow.com/questions/32996883/how-to-update-the-content-of-view-pager-once-it-is-初始化/ 32998458 –

+0

發佈您的完整代碼,以便我可以幫助您的朋友 – TheGreat004

回答

1

更新數據時,應使用這些代碼更新UI。

arrayAdapter.notifyDataSetChanged(); 
+0

我想我現在面臨的問題是我不知道如何訪問片段。 – BraveHeart

+0

使用處理程序來訪問片段。 –

+1

使用LocalBroadcastManager! –