0
我有一個三個片段的主要活動。在第一個片段是一個列表視圖。我填充它的片段的onCreateView方法是這樣的:適配器沒有被刷新
private ArrayList<MobileNETDistinctChatInfo> m_parts = new ArrayList<MobileNETDistinctChatInfo>();
public MobileNETDistinctChatInfoAdapter m_adapter;
public ListView list;
public String logged_user;
onCreateView(){
LinearLayout view = (LinearLayout) inflater.inflate(R.layout.tab1, container, false);
list = (ListView)view.findViewById(R.id.chats_list)
m_parts = db.MESSAGES_getAllDistinctChatInfo(logged_user);
// adapter extends the ArrayAdapter
m_adapter = new MobileNETDistinctChatInfoAdapter(getActivity(), R.layout.chatlist_list_item, m_parts);
list.setAdapter(m_adapter);
return view;
}
我想刷新列表視圖中片段1中的onResume()方法,但我不能得到它的工作。我想這兩種方法(如果我用第一種方法,什麼都不會發生。如果我用的是第二,應用程序崩潰,返回一個NullPointerException異常。):
# 1
public void onResume() {
super.onResume();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
m_adapter.notifyDataSetChanged();
}
}
}
# 2
public void onResume() {
super.onResume();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
m_parts.clear();
m_parts = db.MESSAGES_getAllDistinctChatInfo(logged_user);
ListView list = (ListView) getActivity().findViewById(R.id.chats_list);
MobileNETDistinctChatInfoAdapter caa = (MobileNETDistinctChatInfoAdapter) list.getAdapter();
caa.clear();
for(MobileNETDistinctChatInfo el : m_parts){
caa.add(el);
}
list.setAdapter(caa);
}
}
}
我已經印刷m_parts中的onResume規模和m_adapter ()和似乎適配器沒有被刷新,但m_parts是。有人知道爲什麼,或者我該如何解決這個問題?
我也試過m_adapter.notifyDataSetChanged()沒有runOnUiThread方法,結果是一樣的。 – TheAptKid