2012-02-23 2 views
10

내 Parcelable의 대부분이 작동 중입니다. out.writeString, out.writeInt, in.readString() 등의 간단한 작업은 완벽하게 작동합니다.목록 <String> ReadStringArray in Parcelable

내 문제는 내가 Array/List/ArrayList를 소포로 만들려고 할 때입니다. 나는 현재에 노력하고

:

List<String> 

out.writeStringList() 

잘 작동합니다.

이클립스는 다시 데이터를 읽을 수있는

in.readStringList(List<String> list) 

이 있음을 시사한다. 그러나 그것은 나를 위해 그 일을 아니에요.

() 안에 무엇을 넣어야합니까?

결과가 '일치하는 인수 추가 ...'시도했습니다. 다른 사람 사이의 getter에 대한 참조를 null로 시도했습니다. 모두 'void에서 List로 변환 할 수 없습니다'오류를 반환합니다.

Android Developer에서이 항목을 찾을 수 없습니다.

아무도 도와 줄 수 있습니까?

감사

데이브

답변

19

은 당신이 방법 readStringList(...)의 반환 유형을 지정하려는 것처럼 들린다 오류에서

'목록에 무효로 변환 할 수 없습니다' List<T> 변수. 다른 말로 표현하면 다음과 같습니다.

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

? readStringList(...)은 void를 반환하므로 Eclipse가 불평하는 내용 일 수 있습니다. 실제로 이 아닌이 void 메소드에서 리턴 유형을 얻으려고 시도해야합니다.이 경우 결과를 매개 변수로 지정해야하는 변수를 제공해야합니다. 따라서,이 충분해야합니다

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

을 그건 그렇고, 당신은 대신에 Serializable 인터페이스를 사용하는 것이 좋습니다 (텐트를 사용) 활동 사이에 상대적으로 간단한 데이터 오브젝트를 통과 할 수 있도록하기 위해 Parcelable을 구현하는 경우 -을 특히 여러 객체에 대해 동일한 프로세스를 반복해야하는 경우에는 수고를 덜어줍니다. 소포에

+0

감사에서

out.writeStringList(yourStringList); 

읽기. String 또는 Integer와는 달리 x = in.readString()을 쓰면 바꿀 수 있습니다.readStringList (x) - x는 이전에 작성한 List 입니다. 필자는 Parcelable이 더 많은 작업을해야한다는 것을 알고 있지만, 필자가 읽은 바에 따르면 그 성능은 Serializable의 성능을 능가합니다. 다시 한번 감사드립니다. – DaveSav

+0

집안일 : 일하고 있었는데, 내 코드를 정리하고 멈췄다. 너가 또한 비틀 거리면; 대답은 코드와 함께 http://idlesun.wordpress.com/2011/07/15/android-parcelable-example-2-sub-object-and-list/ – DaveSav

+0

+1 좋은 것 .. 나는 직면했다. 같은 문제 –

13

쓰기 : 그것의 소포

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

이것은 나를 위해 일했다. – Arun