Использование Parcelable в классе библиотеки - PullRequest
2 голосов
/ 07 марта 2011

Я хочу отправить объект между действиями. Читая об этом, я пришел к выводу, что использование Parcelable - лучший путь, поскольку он оказывает наименьшее влияние на производительность. Причина, по которой я хочу это сделать, заключается в том, что для создания объекта мне необходимо загрузить данные из сети, поэтому я не хочу продолжать загружать данные.

Однако для использования Parcel класс должен реализовать Parcelable. Поскольку я пытаюсь отправить объект, определенный в библиотеке, я не могу отредактировать класс, чтобы включить это.

Как лучше всего решить мое затруднительное положение?

Я пытался расширить библиотечный класс и реализовать Parcelable, но потерпел неудачу с ClassCastException. Я также видел упомянутое, что я должен создать класс Parcelable, который будет обернут вокруг моего библиотечного класса, и отправить его таким образом?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Как насчет использования библиотеки parceler ?Вы можете сообщить своему Application, что нужно обрабатывать библиотечные классы :

@ParcelClass(LibraryParcel.class)
public class AndroidApplication extends Application{
    //...
}

Если это сработает, вы можете использовать следующий код для упаковки / развертывания:

Parcelable wrapped = Parcels.wrap(new Example("Andy", 42));
Example example = Parcels.unwrap(wrapped);
example.getName(); // Andy
example.getAge(); // 42
0 голосов
/ 19 марта 2013

Вы пытались использовать Bundle ?

Например, если у вас есть пакетный класс User

Bundle bundle = new Bundle();
List<User> users = new ArrayList<User>();
String userName = user.setUserName("some name");
boolean isOnline = user.setOnline(true);
users.add(user);
bundle.putParcelableArrayList("USER", users);

И вы можете получить это как:

public ArrayList<User> getParcelableArrayList(Bundle bundle){
   List<User> userList = new ArrayList<User>();
   userList = bundle.getParcelableArrayList("USER");
}
...