作业题中,保护搜索结果的内容,是直接保存adapter 还是将数据arraylist保存呢?

作业题中,保护搜索结果的内容,是直接保存adapter 还是将数据arraylist保存呢?

@Override
protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   //String m = mListData.toString();
   mListAdapter = new ListAdaper(MainActivity.this,mListApkInfo);
   outState.pi
   outState.putSerializable("apklist", (Serializable) mListAdapter);
   Log.d(TAG, "onSaveInstanceState: " );
}

以上代码保存的时候报错说 mListAdapter 不是 Serializable 对象

bundle 怎么传递对象呢?

outState 应该是一个bundle 对象吧  但是不知道怎么把list装进去  并取出来 老师给些提示吧?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
蜗_行 2018-07-17 15:13:43

借鉴网上的 新建一个bean类有一个list参数  实现Serializable ,把这个bean类传给bundle

参考地址:

https://blog.csdn.net/willba/article/details/70197512


  • 蜗_行 #1
    还有更好的方法求告知,,感觉这样多出一个Bean 类有点烦
    2018-07-17 15:14:54
  • 让你的OrderDetailVo类进行implements Serializable
    2018-07-17 16:08:09
提问者 mengliu 2018-07-16 15:12:50
  • 你把鼠标放到错误的地方,看一下是什么提示。
    2018-07-16 18:23:53
  • 接收的那个对象需要这样声明<? extends ApkInfo>,你再看一下你的newlist是怎么声明的。
    2018-07-17 16:07:04
提问者 mengliu 2018-07-16 14:06:56

//当系统发生变化的时候调用
@Override
protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);

   //mListAdapter = new ListAdaper(MainActivity.this,mListApkInfo);
    //老师这个地方数据保护  我是 我的数据是自定义的Arraylist  不知道怎么操作 这样保存可以吗?
   outState.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) newlist);
   Log.d(TAG, "onSaveInstanceState: " );
}

取出的时候报错啊

http://img1.sycdn.imooc.com//climg/5b4c35f900019d0313260285.jpg


  • 1)让你的ApkInfo类implements Serializable 。2)你把取到的值,还赋值给newlist呀,别换内容。
    2018-07-16 14:33:31
  • 提问者 mengliu 回复 好帮手慕雪 #2
    实现了Serializable 接口还是不对啊?
    2018-07-16 15:13:16
好帮手慕雪 2018-07-16 11:21:43

保存 ArrayList。你的 ArrayList存放的是ApplicationInfo对象吧?然后  outState可以putParcelableArrayList("app_info", applicationInfos);因为ApplicationInfo就是Serializable 的。 祝:学习愉快           


  • 提问者 mengliu #1
    老师 我是自己创建的实例类保存了应用名和图标 我是想 如果遇到别的场景 不是要保存ApplicationInfo 需要保存arraylist的场景怎么办呢? private void showListView() { mListApkInfo = new ArrayList<>(); for (int i=0;i<listdata.size();i++){ ApkInfo mApkInfo = new ApkInfo(); mApkInfo.setIcon(listdata.get(i).activityInfo.loadIcon(getPackageManager())); mApkInfo.setText((String) listdata.get(i).activityInfo.loadLabel(getPackageManager())); mListApkInfo.add(mApkInfo); } mListAdapter = new ListAdaper(MainActivity.this,mListApkInfo); listView.setAdapter(mListAdapter); mListAdapter.notifyDataSetChanged(); }
    2018-07-16 11:25:35
  • 好帮手慕雪 回复 提问者 mengliu #2
    那你就需要把保存的类进行Serializable 了,例如你上面的代码把ApkInfo进行Serializable 一下。
    2018-07-16 13:51:42
  • 提问者 mengliu 回复 好帮手慕雪 #3
    怎么序列化啊?
    2018-07-16 14:07:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师