Реализация Parcelable для Android с 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 часов). Так что мне интересно: . Можно ли создать объект Parcelable с учетом спецификаций объекта Tournament с ArrayList? . Как сохранить все данные турнира в объект Parcelable и получить к ним доступ из другого действия? (а именно А и Б).


person Tu Hoang    schedule 19.11.2011    source источник
comment
проверьте этот ответ, в котором есть полный пример того, как анализировать arrayList с помощью Parcelable. stackoverflow.com/questions/ 7400564/   -  person Lalit Poptani    schedule 19.11.2011
comment
@LalitPoptani: Значит, объект игрока также должен быть Parcelable?   -  person Tu Hoang    schedule 19.11.2011
comment
@LalitPoptani: Спасибо за помощь. Я закончил реализацию разделяемых объектов! Я скоро добавлю код, который я реализовал, чтобы другие люди могли ссылаться на него, когда они столкнутся с той же проблемой!   -  person Tu Hoang    schedule 19.11.2011
comment
Если вы хотите, чтобы я ответил на мою ссылку здесь, вы можете проголосовать и отметить ее галочкой. :)   -  person Lalit Poptani    schedule 19.11.2011
comment
Хорошо, спасибо, я опубликовал свой ответ. :)   -  person Lalit Poptani    schedule 19.11.2011
comment
пропустит их между намерениями????   -  person Gennadiy Ryabkin    schedule 25.09.2013
comment
Попробуйте этот очень полезный инструмент: devk.it/proj/parcelabler   -  person Jumpa    schedule 26.10.2013


Ответы (2)


вот код, который показывает вам, как парсить массив

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];
          }
    }; }
person Community    schedule 22.06.2013

многие из этих вещей оказываются R.P.C. — я бы написал большую часть работы на традиционной Java, а затем попытался сделать......

ага, точно:

Контейнер для сообщения (ссылки на данные и объекты), которое можно отправить через IBinder. Parcel может содержать как сглаженные данные, которые не будут сведены на другой стороне IPC (используя различные методы здесь для записи определенных типов или общий интерфейс Parcelable), так и ссылки на активные объекты IBinder, которые приведут к тому, что другая сторона получит прокси-IBinder, связанный с исходным IBinder в Parcel.

другими словами Parcel - это форма межпроцессного взаимодействия....

вам нужно переосмыслить базовую модель, поскольку это не 10 000 запросов на второй сервер - это портативное потребительское устройство, которое может просто вытащить указатели из таблицы процессов, если это необходимо, из-за того, где он работает

Я научился переходить на вкладку блога по адресу http://android-developers.blogspot.com/?hl=en

будьте очень осторожны, чтобы не углубляться в запись, которая должна быть в рабочих потоках, и обратите внимание на богатые примитивы синхронизации, которые Java упрощает использование

Многопоточность для производительности

Размещено Тимом Бреем 19 июля 2010 г. в 11:41 [Эта запись написана Жилем Дебюнном, инженером из группы Android, который любит многозадачность. — Тим Брей]

это в блогах --- гораздо лучше начать

person Nicholas Jordan    schedule 19.11.2011