2012-02-23 9 views
10

Większość mojej działki działa; Proste rzeczy, takie jak out.writeString, out.writeInt, in.readString() itp. Działają doskonale.Lista <String> readStringArray w Parcelable

Mój problem polega na tym, że chcę ustawić Parcel/ArrayList (próbowałem ich wszystkich).

Obecnie próbuję z:

List<String> 

i

out.writeStringList() 

działa dobrze.

Eclipse sugeruje, że istnieje

in.readStringList(List<String> list) 

czytać te dane z powrotem. Ale to nie robi to dla mnie.

Co mamy umieścić w()?

Próbowałem nic, z wynikiem "Dodaj argument do dopasowania ..." Próbowałem null, odniesienia do gettera między innymi; które wszystkie zwracają błąd "nie można przekształcić z pustki na listę"

Nie mogę znaleźć niczego w Android Developer o tym.

Czy ktoś może pomóc?

Dzięki

Dave

Odpowiedz

19

„nie można przekonwertować z void do listy”

Od tego błędu brzmi jak próbujesz przypisać typ zwracanej metody readStringList(...) do zmienna List<T>. Innymi słowy: czy może piszesz coś w stylu:

List<String> stringList = in.readStringList(stringList) 

? readStringList(...) zwraca pustkę, więc może to być przyczyna narzekania Eclipse. Naprawdę powinieneś/powinnaś próbować uzyskać typ zwrotny z metody nieważności - w tym przypadku musisz podać zmienną, której wynik powinien być przypisany jako parametr. Stąd, powinno to wystarczyć:

List<String> stringList = null; 
in.readStringList(stringList) 

Nawiasem mówiąc, jeśli wdrożenie Parcelable aby móc przejść stosunkowo prostych obiektów danych między działalnością (z wykorzystaniem intencyjne), należy rozważyć użycie Serializable interfejs w zastępstwie - go Pozwoli to zaoszczędzić mnóstwo pracy, szczególnie jeśli chcesz powtórzyć ten sam proces dla wielu obiektów.

+0

to wszystko, dzięki. W przeciwieństwie do String lub Integer, gdzie piszesz x = in.readString(), zamieniasz go tak, aby był w.readStringList (x) - gdzie x jest twoją wcześniej utworzoną listą . Wiem, że Parcelable to więcej pracy do skonfigurowania, ale z tego, co przeczytałem na ten temat, jego wydajność przewyższa wydajność Serializable. Dzięki jeszcze raz. – DaveSav

+0

HOUSEKEEPING: To działało, potem "wyczyściłem mój kod" i zostało zatrzymane. Jeśli jesteś także zakłopotany; odpowiedź z kodem jest pod adresem http://idlesun.wordpress.com/2011/07/15/android-parcelable-example-2-sub-object-and-list/ – DaveSav

+0

+1 Nice one .. Stawałem twarzą w twarz ten sam numer –

13

Zapis na działce:

out.writeStringList(yourStringList); 

Czytaj od działki

List<String> newList = in.createStringArrayList(); 
+1

To zadziałało dla mnie. – Arun