zoukankan      html  css  js  c++  java
  • Intent传递list集合时异常解决

    以前只是用intent传递一些简单的值,最近传递list集合时发现值总是传不过去,logcat报如下错误

    说的是不能处理值为null的情况,回过头看list集合时确实发现有value为null的key,这样问题就简单了,把value为null的

    key给移除就可以了。

    ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>();//list为要传递的集合
                            Map<String, Object> temMap = list.get(0);
                            List<String> keys=new ArrayList<String>(temMap.keySet());
                            for(String key:keys){            
                                Object value=temMap.get(key);
                                if(value.equals(null)){
                                    temMap.remove(key);
                                }
                            }
                            intent.putExtra("data", list);
    //                        intent.putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) list);

    这样处理之后list集合就可以成功传递了。

    最后顺便说下intent传递list集合的两种方法

    一、用intent.putExtra("data", list)形式,查看源码可以发现ArrayList是实现了Serializable这个接口的

    取值的时候用intent.getSerializableExtra("data")就可以了。

    二、用intent.putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) list)这用形式。

    取值的时候用如下方式:

    List<? extends Parcelable> temlist = (ArrayList<? extends Parcelable>)intent.getParcelableArrayListExtra("data");
    List<Map<String, Object>> list=(List<Map<String, Object>>) temlist;

    总的来说第二种方法过于繁琐,推荐使用第一种。

  • 相关阅读:
    .net Core
    4.1 愚人节
    迷茫了....
    关于Plupload结合上传插件jquery.plupload.queue的使用
    兼容浏览器 回车键 keydown事件
    JS判断是否是IE浏览器的几种方式
    IE IE8 iframe的onload方法分析 IE浏览器onload事件失效
    java 获取请求的完整url地址
    SQLSERVER 数据库基础操作
    java 四舍五入 保留两位小数
  • 原文地址:https://www.cnblogs.com/dj168/p/4088898.html
Copyright © 2011-2022 走看看