Android Распределение объектов с помощью элемента JSONArray - PullRequest
1 голос
/ 06 июля 2011

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

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

Чтобы быть более точным, мне нужно разбить полямой объект с

writeX ();

, где X может использовать такие вещи, как целые, строки и т. д. Однако, как я только что сказал, одно из моих полей является типом JSONArray для определенногопричина (я не хочу менять это в любом случае) и кажется, что Parcel не поддерживает это?

Спасибо

Ответы [ 3 ]

1 голос
/ 19 июля 2011

спасибо за ответ, но, к сожалению, этот JSONArray содержит слишком много различной информации, чтобы это работало (в нем есть целые строки, JSONObjects и даже JSONArrays -_-). Однако я нашел способ, и это преобразовать весь JSONArray в строку с помощью метода toString. Это позволяет поместить его в комплект. Мне не очень нравится делать это таким образом ... но у меня не так много времени, чтобы думать об этом слишком долго: P. Все равно спасибо

1 голос
/ 21 мая 2012

Мне удалось поместить ArrayList JSONObjects в пакет, используя putSerializable вместо putParcelable.

0 голосов
/ 19 июля 2011

Знаете ли вы заранее, какой тип у JSONArray? Если это так, вы можете преобразовать JSONArray в список известного типа.

JSONArray здесь не поддерживается, потому что он не является классом, реализующим Parcelable. Если вы абсолютно не можете контролировать выбор этого типа JSONArray, вам нужно преобразовать JSONArray в список.

Следующий код преобразует JSONArray известного типа String в ArrayList:

ArrayList<String> list = new ArrayList<String>();    
JSONArray jsonArray = (JSONArray)jsonObject;
if (jsonArray != null) {
   for (int i=0;i<jsonArray.size();i++){
    list.add(jsonArray.get(i).toString());
}
...