当返回到listview片段时更新它



我有一个在片段之间转换的Activity。片段1到片段2。片段1有一个listview。当用户转到片段2时,用户可以选择对填充listview的数据进行更改。当用户按下后退按钮时,它会将他们带回到第一个片段。当用户返回时,必须更新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();

你可以在ListView的适配器上调用notifyDataSetChanged();

查看更多信息

你可以使用罗宾斯的答案,或者如果你想将片段2中的数据传递给片段1,你可以调用片段1类中的方法:

YourFragmentClass.refreshList( your data)

和片段2中的方法:

//使用你的数据设置适配器

}

在您的片段中,包含如下代码:

(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;

我认为实现这一点的最好方法是在片段的onResume()-方法中加载列表。因此,代码看起来像这样:

@Override
public void onResume() {
    super.onResume();
    initializeList();
}
...
private void initializeList() {
    adapter = new MessageTemplateAdapter(getActivity(), datasource.getTemplateList());
    setListAdapter(adapter);
}

最新更新