[英]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.