所以我正在实现一个测试应用程序,我将在其中创建一个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)。
答案 0 :(得分:2)
这里是代码,告诉你如何parcle 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];
}
}; }
答案 1 :(得分:0)
很多这些事情都变成了R.P.C. - 我会用传统的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组的一名工程师,喜欢多任务。 - 蒂姆布雷]
它在博客中 - 更好的起点