2015-02-13 4 views
0

Я пытаюсь передать ArrayList между действиями, но ничего, что я пробовал, работает.
Это был мой лучший снимок, но это тоже не сработало.Как я могу передать ArrayList между действиями?

Я звоню внешнее действие здесь:

getComics getComicInfo = new getComics(charName, pageNum); 
getComicInfo.execute(); 
getIntentData() 

и здесь я пытаюсь поставить данные, но проблема обусловлена ​​тем фактом, что это внешнее воздействие, поэтому я не могу переложить через действия.

if(counter == comicInfoObject.length()){ 

     Log.v("check arr length =>" , Integer.toString(comicList.size())); 
     Intent i = new Intent(); 
     i.putExtra("comicArrayList", (ArrayList<Comics>)comicList); 
     } 

и здесь я Тринг retrive данные, но не попасть внутрь «если»

public void getIntentData(){ 
     Intent i = getIntent(); 
     if(i != null && i.hasExtra("comicArrayList")){ 
      comicList2 = i.getParcelableExtra("comicArrayList"); 
      int size = comicList2.size(); 
     } 
    } 

первый код, где я называю внешний класс, используя API и в нижней строке создается arrayList второй код находится внутри внешнего класса, где я пытаюсь передать arrayList с putExtra
Третий код - это то, где я пытаюсь получить данные после getIntentData().

+0

Как начать другую деятельность? –

+0

Я отредактировал, пропустил скопированный материал и объяснил. – Aviv1002

+0

Не используйте Parcelable, используйте Serializeable. –

ответ

0

пакет у отправителя Activity

intent.putParcelableArrayListExtra(<KEY>, ArrayList<Comics extends Parcelable> list); 
startActivity(intent); 

Extract в приемнике Activity

getIntent().getParcelableArrayListExtra(<KEY>); 
+0

Где я их размещаю? он не позволяет мне использовать extends Parcelable и не запускать активность – Aviv1002

+0

Расширить свой собственный класс 'ArrayList' до' Parceable' –

+0

Intent i = new Intent(); \t \t \t Intent.putParcelableArrayListExtra ("comicArrayList", ArrayList comicList); \t \t \t startActivity (i); попробовал это, не работает, проблемы с расширениями. – Aviv1002

0

Вам нужно сделать класс Comics, который реализует Parcelable, а затем использовать put ParcelableArrayListExtra пройти ArrayList.

Вот ссылка образец для Pass data between activities реализует Parcelable

Однако будьте осторожны, если ваш список слишком большой массив, вы могли бы получить пристальный исключение, в этом случае вы могли бы думать о static reference для хранения списка массива.

+0

Не используйте Parcelable, используйте Serializeable. –

+0

Parcelable быстрее, чем Serializeable, а сериализация - это дорогостоящая операция, которую вы должны держать в минимуме. А также Serializable - это стандартный Java-интерфейс, Parcelable - Android специфический интерфейс – Xcihnegn

+0

Нет, это не так, Parcelable тоже дорого, и очень сложно понять, Serializeable легко и достаточно быстро. –