繁体   English   中英

使用ArrayList实现Android Parcelable实现<Object>

[英]Android Parcelable Implementation with ArrayList<Object>

所以我正在实现一个测试应用程序,在其中我将创建一个Tournament对象作为Parcelable并将在意图之间传递它们。 比赛包括:。 锦标赛名称。 规则 。 匹配玩家的规则(随机/手动)。 玩家阵列列表

这是我到目前为止:

Tournament.java

public class TournamentData implements Parcelable {
private String tourName;
private int bestOf;
private boolean isRandom;
private ArrayList<Player> playerList;

public TournamentData(String name, int tourBestOf, boolean random) {
    this.tourName = name;
    this.bestOf = tourBestOf;
    this.isRandom = random;
}

public void addPlayer(Player newPlayer) {
    this.playerList.add(newPlayer);
}

public ArrayList<Player> getPlayerList() {
    return playerList; 
}

    /* getters and setters excluded from code here */

    public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

public void writeToParcel(Parcel out, int flags) {
    // TODO Auto-generated method stub

}

Player.java

public class Player {

private String playerName;
private String playerEmail;

public Player(String name, String email) {
    this.playerName = name;
    this.playerEmail = email;
}
    /* getter and setters are excluded */

}

我是Android的新手(我的意思是非常非常新的;我想是10个小时)。 所以我想知道:。 是否可以根据具有ArrayList的Tournament对象的规范创建Parcelable对象? 如何将所有锦标赛数据存储到Parcelable对象中并从其他活动访问它们? (即A和B)。

这里是代码,告诉你如何parri a arraylist

public class ParcleListTopic implements Parcelable{
    private List<ParcleTopic> list;
    private ArrayList<HoldListTopic> listh=new ArrayList<HoldListTopic>();
    public ArrayList<HoldListTopic> GetListTopic()
    {
        for(int i=0;i<list.size();i++)
        {
            listh.add(list.get(i).GetHold());
        }
        return listh;
    }
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeTypedList(list);
    }
    public ParcleListTopic(Parcel in)
    {
        in.readTypedList(list,ParcleTopic.CREATOR);

    }
    public ParcleListTopic(List<ParcleTopic> list)
    {
        this.list=list;
    }
    public static final Parcelable.Creator<ParcleListTopic> CREATOR = new Parcelable.Creator<ParcleListTopic>(){
          public ParcleListTopic createFromParcel(Parcel s)
          {
              return new ParcleListTopic(s);
          }
          public ParcleListTopic[] newArray(int size) 
          {
                return new ParcleListTopic[size];
          }
    };
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
}


public class ParcleTopic implements Parcelable
{
    HoldListTopic hold;
    public ParcleTopic(HoldListTopic hold)
    {
        this.hold=hold;
    }
    public HoldListTopic GetHold()
    {
        return hold;
    }
    public int describeContents() 
    {
        return 0;
    }
    public void writeToParcel(Parcel dest, int flags)
    {
        dest.writeString(hold.Title);
        dest.writeString(hold.Date);
        dest.writeInt(hold.NumberComment);
        dest.writeInt(hold.ID);
    }
    public ParcleTopic(Parcel in)
    {
        hold.Title=in.readString();
        hold.Date=in.readString();
        hold.NumberComment=in.readInt();
        hold.ID=in.readInt();
    }
    public static final Parcelable.Creator<ParcleTopic> CREATOR = new Parcelable.Creator<ParcleTopic>()
    {
          public ParcleTopic createFromParcel(Parcel s)
          {
              return new ParcleTopic(s);
          }
          public ParcleTopic[] newArray(int size) 
          {
                return new ParcleTopic[size];
          }
    }; }

很多这些东西都变成了RPC - 我会用传统的Java编写工作的主要部分然后尝试制作......

是的,果然:

可以通过IBinder发送的消息(数据和对象引用)的容器。 Parcel可以包含将在IPC的另一侧展开的扁平数据(使用此处用于编写特定类型的各种方法,或通用Parcelable接口),以及对将导致另一方接收的实时IBinder对象的引用代理IBinder与包裹中的原始IBinder连接。

换句话说,Parcel是一种进程间通信的形式....

您必须重新考虑基本模型,因为这不是10,000个请求第二个服务器 - 它是一个手持式消费者设备,如果必须由于它在哪里运行,它可以将指针从流程表中拉出来

我已经学会了访问http://android-developers.blogspot.com/?hl=en上的博客标签

要非常小心,不要深入挖掘需要在工作线程中的内容,并注意Java易于使用的丰富同步原语

多线程性能

Tim Bray于2010年7月19日上午11:41发布[本文由Gilles Debunne撰写,他是Android组的一名工程师,喜欢多任务。 - 蒂姆布雷]

它在博客中 - 更好的起点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM