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];
            }
        };
    }
  • 相关阅读:
    第七周——Linux内核如何装载和启动一个可执行程序
    第十八章读书笔记
    第三章读书笔记
    第六周——分析Linux内核创建一个新进程的过程
    第五章读书笔记
    Linux内核分析——分析system_call中断处理过程
    第一二章读书笔记
    20145217《网络对抗》 Web安全基础实践
    20145217《网络对抗》web基础
    20145217《网络对抗》 MSF基础应用
  • 原文地址:https://www.cnblogs.com/feijian/p/4776394.html
Copyright © 2011-2022 走看看