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];
            }
        };
    }
  • 相关阅读:
    06 继承与多态
    动手动脑 4 String 类
    字串加密
    课后作业(查询类对象创建个数)
    动手动脑 3 类与对象
    动手动脑 (第二次)
    IOS 网络判断
    ios常用的几个动画代码
    iOS Get方式带中文不能请求网络
    UILabel Text 加下划线
  • 原文地址:https://www.cnblogs.com/feijian/p/4776394.html
Copyright © 2011-2022 走看看