0

我有一个片段,我在其中放置了一个从互联网获取其内容的列表视图,当我单击一行并返回列表视图时,它再次获取数据,但我想保持列表视图的最后状态,我该怎么做?

public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
    mRootView = inflater.inflate(R.layout.fragment_list, container, false);

    list = (ListView) mRootView.findViewById(R.id.mainList);
    footerView = ((LayoutInflater) G.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
            .inflate(R.layout.listfooter, null, false);
    mainInfoList = new ArrayList<MainInfo>();

    mainInfoAdapter = new AdapterMainInfo(getActivity(), R.id.mainList, mainInfoList);
    list.setAdapter(mainInfoAdapter);
}

...

4

1 回答 1

0

这可以通过两种方式实现:

1. 分片交易类型:这是没有漏洞的最佳方式。

对片段事务使用添加而不是替换或删除。

片段1>>(添加)>>片段2

在这种情况下,当您从 fragment2 回到 fragment1 时,它的视图将不会再次创建。因为 onCreateView 不会再次调用。

2.代码管理

如果由于某些对您的应用程序很重要的工作,您只想对从片段 1 到片段 2 的片段事务使用替换或删除。

所以在onCreateView 中做一件事,检查rootview。如果根视图为空,则创建新视图或保留那里发生的任何事情。

public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
    if(mRootView==null){
       mRootView = inflater.inflate(R.layout.fragment_list, container, false);
    }else {
        container.removeView(rootView);
    }
}
于 2016-12-13T11:41:53.283 回答