我有一个在片段之间转换的Activity。片段1到片段2.片段1具有列表视图。当用户转到片段2时,用户可以选择更改填充列表视图的数据。当用户按下后退按钮时,它会将它们带回第一个片段。当用户返回时,必须更新listview以显示在片段2中所做的更改。我该怎么做?
Frag2 pfrag = new Frag2();
pfrag.setArguments(bundle);
ft=fm.beginTransaction();
ft.add(R.id.fragment_swap, pfrag,"Profile");
ft.show(pfrag);
ft.addToBackStack("pfrag");
ft.commit();
答案 0 :(得分:0)
您可以通过在ListView的适配器上调用notifyDataSetChanged();
来执行此操作。
答案 1 :(得分:0)
您可以使用Robins的答案,或者如果您想将片段2中的数据传递给片段1,您可以调用片段1类中的方法:
YourFragmentClass.refreshList( your data)
并在片段2中使用方法:
puplic void refreshList(您的数据){
//使用您的数据设置适配器
}
答案 2 :(得分:0)
在您的片段中,请包含以下代码。
(isPaused)布尔变量用于跟踪当前片段在导航到下一个活动时暂停。
在恢复后退调用webservice(或)通过从适配器调用notifydatasetchanged()来调用方法来刷新列表。
@Override
public void onResume() {
super.onResume();
if(isPaused) {
isPaused=true;
fetchDirectories();
// call the adapter method to notify the data set.
}
}
@Override
public void onPause() {
super.onPause();
isPaused=true;
}
private boolean isPaused=false;
答案 3 :(得分:-1)
我认为实现这一目标的最佳方法是将片段加载到片段的onResume() - Method中。所以,代码看起来像这样:
@Override
public void onResume() {
super.onResume();
initializeList();
}
...
private void initializeList() {
adapter = new MessageTemplateAdapter(getActivity(), datasource.getTemplateList());
setListAdapter(adapter);
}