2015-04-19 2 views
0

Я хочу создать собственный класс сущностей Parcelable .. У меня есть несколько полей в нем: String [] и другой пользовательский объект сущности (что является возможным). Я хочу знать, как читать и напишите эти объекты и списки.Android Parcelable: чтение и письмо

public class CustomEntity implements Parcelable { 
    private int number; 
    private String[] urls; 
    private AnotherEntity object; 

    public CustomEntity(Parcel in) { 
     number = in.readInt(); 
     // how should I read urls? 
     // how should I read object? 
    } 

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeInt(number); 
     // how should I write urls? 
     // how should I write object? 
    } 

} 
+0

почему вам нужно использовать parcelable ?? простирайтесь от сериализуемого, если все, что вы хотите сделать, - это передача данных из одной активности в другую. Java позаботится о сортировке и разборке самостоятельно. – Ichthyocentaurs

+1

@AkshatArora, потому что Parcelable намного быстрее – inmyth

+0

Ну, да, но я сомневаюсь, что вы увидите большую разницу только с тремя переменными класса, и из вашего кода может быть удалена большая сложность. Я бы предложил использовать дополнительные детали при использовании объектов с тяжелой моделью или для любых взаимодействий AIDL. В любом случае, мой ответ приведен ниже. – Ichthyocentaurs

ответ

1

Для String [] Вы можете использовать API

parcel.writeStringArray(url) 

Для AnotherEntity вам нужно продлить его Parcelable снова

parcel.writeParcelable(); 
+0

что делать, если у меня есть список сущностных объектов ... Подобно CustomEntity [] objects; Как мне читать и писать –

+0

writeParcelableArray() придет вам на помощь :) – Ichthyocentaurs

+0

writeParcelableArray (T [] значение, int parcelableFlags) .. что я должен вводить как parcelableFlags?!?!? –

1

Я определенно думаю, что вы НЕ должны обращаться с шаблоном самостоятельно. Есть библиотеки, похожие на Parceler, где только одна аннотация на вашем POJO и одна строка, например Parcel.wrap или Parcel.unwrap, вы можете выполнить мгновенную сериализацию.

Смежные вопросы