完美 解决fragment中listview数据丢失问题和问题分析
2017-10-24 09:43
399 查看
解决fragment中listview数据丢失问题
private ListViewForScrollView
mListview;
private FindShareAdatpter
shareAdatpter =
null;
private List<TaskFindInfo>
tastlistdata=null;
首先分析下它的生命周期,与 activity 不同的是,这个 rootivew 被重复创建过
那listview 肯定也被重复初始化,自然它的 getAdapter 就为空了,那就相当于没有内容了;
但整个 fragment 只被创建过一次,并没有走
onDestroy 死亡 的方法;
一个类中的私有成员只有在它 上层类被回收时才会被回收, 其实 tastlistdata和 shareAdatpter
都没有被回收,也就不需要反复加载数据了;
10-24 09:17:22.866 13330-13330/nabei.com.automat D/RonyDebug: onCreate
10-24 09:17:22.867 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:17:22.956 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:17:22.966 13330-13330/nabei.com.automat D/RonyDebug: onResume
10-24 09:18:00.205 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:18:00.212 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:18:00.212 13330-13330/nabei.com.automat D/RonyDebug: onResume
10-24 09:18:38.212 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:18:38.224 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:18:38.224 13330-13330/nabei.com.automat D/RonyDebug: onResume
关键代码:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if ( mListview.getAdapter()==null) {
if (shareAdatpter==null) {
shareAdatpter = new FindShareAdatpter(getActivity());
new HttpRest(getActivity(), mhandler, 1).get_findActivityList();
}else{
showlist(tastlistdata);
}
}
}
完整代码,并不需要对 其它数据作任何处理:
public class MainpageFind extends Fragment {
private ListViewForScrollView mListview;
private FindShareAdatpter shareAdatpter = null;
private List<TaskFindInfo> tastlistdata=null;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if ( mListview.getAdapter()==null) {
if (shareAdatpter==null) {
shareAdatpter = new FindShareAdatpter(getActivity());
new HttpRest(getActivity(), mhandler, 1).get_findActivityList();//网络请求加载数据
}else{
showlist(tastlistdata);
}
}
}
private Handler mhandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
List<TaskFindInfo> taskinfos = (List<TaskFindInfo>) msg.obj;
tastlistdata=taskinfos;
showlist(taskinfos);
}
}
};
private void showlist(List<TaskFindInfo> tastlist) {
shareAdatpter.SetList(tastlist);
mListview.setAdapter(shareAdatpter);
shareAdatpter.notifyDataSetChanged();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mainpage3, null);
bbstv = (TextView) view.findViewById(R.id.bbstv);
helptv = (TextView) view.findViewById(R.id.helptv);
helptv.setOnClickListener(this);
bbstv.setOnClickListener(this);
mListview = view.findViewById(R.id.actionlist);
return view;
}
}
private ListViewForScrollView
mListview;
private FindShareAdatpter
shareAdatpter =
null;
private List<TaskFindInfo>
tastlistdata=null;
首先分析下它的生命周期,与 activity 不同的是,这个 rootivew 被重复创建过
那listview 肯定也被重复初始化,自然它的 getAdapter 就为空了,那就相当于没有内容了;
但整个 fragment 只被创建过一次,并没有走
onDestroy 死亡 的方法;
一个类中的私有成员只有在它 上层类被回收时才会被回收, 其实 tastlistdata和 shareAdatpter
都没有被回收,也就不需要反复加载数据了;
10-24 09:17:22.866 13330-13330/nabei.com.automat D/RonyDebug: onCreate
10-24 09:17:22.867 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:17:22.956 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:17:22.966 13330-13330/nabei.com.automat D/RonyDebug: onResume
10-24 09:18:00.205 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:18:00.212 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:18:00.212 13330-13330/nabei.com.automat D/RonyDebug: onResume
10-24 09:18:38.212 13330-13330/nabei.com.automat D/RonyDebug: onCreateView
10-24 09:18:38.224 13330-13330/nabei.com.automat D/RonyDebug: onActivityCreated
10-24 09:18:38.224 13330-13330/nabei.com.automat D/RonyDebug: onResume
关键代码:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if ( mListview.getAdapter()==null) {
if (shareAdatpter==null) {
shareAdatpter = new FindShareAdatpter(getActivity());
new HttpRest(getActivity(), mhandler, 1).get_findActivityList();
}else{
showlist(tastlistdata);
}
}
}
完整代码,并不需要对 其它数据作任何处理:
public class MainpageFind extends Fragment {
private ListViewForScrollView mListview;
private FindShareAdatpter shareAdatpter = null;
private List<TaskFindInfo> tastlistdata=null;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if ( mListview.getAdapter()==null) {
if (shareAdatpter==null) {
shareAdatpter = new FindShareAdatpter(getActivity());
new HttpRest(getActivity(), mhandler, 1).get_findActivityList();//网络请求加载数据
}else{
showlist(tastlistdata);
}
}
}
private Handler mhandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
List<TaskFindInfo> taskinfos = (List<TaskFindInfo>) msg.obj;
tastlistdata=taskinfos;
showlist(taskinfos);
}
}
};
private void showlist(List<TaskFindInfo> tastlist) {
shareAdatpter.SetList(tastlist);
mListview.setAdapter(shareAdatpter);
shareAdatpter.notifyDataSetChanged();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mainpage3, null);
bbstv = (TextView) view.findViewById(R.id.bbstv);
helptv = (TextView) view.findViewById(R.id.helptv);
helptv.setOnClickListener(this);
bbstv.setOnClickListener(this);
mListview = view.findViewById(R.id.actionlist);
return view;
}
}
相关文章推荐
- 解决fragment中listview数据丢失问题
- 关于ListVIew加载数据混乱的问题分析和解决
- ListView中使用EditText(解决EditText焦点丢失、保存数据以及滚动冲突的问题)
- GreenDAO 完美解决数据库升级数据丢失问题
- Tab总结及完美解决FragmentPagerAdapter保存数据更新问题
- 用getChildFragmentManager解决Fragment嵌套Fragment数据丢失的问题
- Android 解决ListView中有EditText时,数据丢失问题
- Android Listview制定属于自己的适配器,完美解决数据刷新等问题!
- excel内容导入数据库数据丢失问题的分析几解决方法
- 工厂模式加单例管理Fragment,同时解决fragment切换数据丢失问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- dmp数据导入,Blob字段数据丢失的问题解决
- [转]android listview 连续调用 getview问题分析及解决
- 解决ckeditor等编辑器读入数据丢失尖括号的问题。
- 【项目分析】利用J#类库解决项目中数据压缩以及解压的问题
- php session跨页面传递 session值丢失问题之完美解决
- 使用OleDbConnection导入Excel混合数据列数据丢失分析与解决
- 解决linux中flash掉电丢失数据问题
- 动态创建的 HTML 控件提交后数据丢失问题及解决
- .NET中Excel数据访问数据丢失的分析与解决