返回时更新片段中的listview

时间:2014-06-17 17:16:07

标签: android android-fragments android-listview

我有一个在片段之间转换的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();

4 个答案:

答案 0 :(得分:0)

您可以通过在ListView的适配器上调用notifyDataSetChanged();来执行此操作。

For more info

答案 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);
}