zoukankan      html  css  js  c++  java
  • android 开发Parcelable 怎么传值ArrayList

    public class TradeEntity implements Parcelable{
        public String id;
        
        //有关进度条的参数
        ArrayList<TradeStateNodeInfo> nodes;
        public TradeEntity() {
            nodes = new ArrayList<TradeStateNodeInfo>();
        }
        /////////////////////////实现parcel接口///////////////////////////////
        @Override
        public int describeContents() {
            return 0;
        }
        @Override
        public void writeToParcel(Parcel out, int arg1) {
            out.writeString(id);
            out.writeList(nodes);
        }
        private TradeEntity(Parcel in)
        {
            id = in.readString();
            nodes = in.readArrayList(TradeStateNodeInfo.class.getClassLoader());
        }
        public static final Parcelable.Creator<TradeEntity> CREATOR = new Parcelable.Creator<TradeEntity>() 
        {
            public TradeEntity createFromParcel(Parcel in) 
            {
                return new TradeEntity(in);
            }
    
            public TradeEntity[] newArray(int size) 
            {
                return new TradeEntity[size];
            }
        };
    }

     以上问题还会出现不能传值的问题,解决如下:

    将 TradeStateNodeInfo 也要实现parcel接口

    import android.os.Parcel;
    import android.os.Parcelable;
    
    /**
     * 交易状态
     * @author huqiang
     *
     */
    public class TradeStateNodeInfo implements Parcelable{
    
        public int active;   //颜色激活(-1、错误;0、未激活;1、激活;2、当前步骤成功)
        public String time ; 
        public String name ; //节点名称
        
        public TradeStateNodeInfo()
        {}
        private TradeStateNodeInfo(Parcel in)
        {
            active = in.readInt();
            time = in.readString();
            name = in.readString();
        }
        @Override
        public int describeContents() {
            return 0;
        }
        @Override
        public void writeToParcel(Parcel out, int flag) {
            out.writeInt(active);
            out.writeString(time);
            out.writeString(name);
        }
        public static final Parcelable.Creator<TradeStateNodeInfo> CREATOR = new Parcelable.Creator<TradeStateNodeInfo>() 
        {
            public TradeStateNodeInfo createFromParcel(Parcel in) 
            {
                return new TradeStateNodeInfo(in);
            }
    
            public TradeStateNodeInfo[] newArray(int size) 
            {
                return new TradeStateNodeInfo[size];
            }
        };
    }
  • 相关阅读:
    java中return在Try-Catch中的执行顺序
    面向对象软件开发方法概述
    内部类
    JAVA中的继承
    错题分析
    【cocos2d-x 手游研发小技巧(1)自定义制作怪物伤害数值】
    【cocos2d-x 手游研发----地图活起来了】
    【cocos2d-x 手游研发----精灵的八面玲珑】
    【cocos2d-x 手游研发----研发思路及感想】
    通俗易懂的讲解区块链
  • 原文地址:https://www.cnblogs.com/feijian/p/4776394.html
Copyright © 2011-2022 走看看