我有Messanger App,它有一个带有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);
}
仅供参考:当我在detailsFragment上并且收到新的聊天消息时,同样的事情发生了:除非我离开活动并回来,否则消息不会出现。
答案 0 :(得分:1)
更新数据时,应使用这些代码更新UI。
arrayAdapter.notifyDataSetChanged();