我有一个片段,其中我放了一个listview从互联网获取其内容,当我点击一行并返回列表视图时它再次获取数据,但我想保持listview的最后状态,我该怎么办?那样做?
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);
}
...
答案 0 :(得分:0)
这可以通过两种方式实现:
<强> 1。片段交易类型:这是没有漏洞的最佳方式。
使用add for fragment transaction而不是替换或删除。
<强>片段1&GT;&GT;(补充)&GT;&GT; Fragment2 强>
在这种情况下,当您从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);
}
}