繁体   English   中英

如何将一个列表视图的所有内容保存在一个片段中?

[英]How to save all things of a listview in a fragment?

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

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

...

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

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

将add用于片段事务,而不是替换或删除。

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

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

2.代码管理

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

所以在onCreateView中做一件事,检查rootview。 如果root视图为null,则创建一个新视图,或者将正在发生的一切保留在那里。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM