2012-02-23 20 views
10

Hầu hết bưu kiện của tôi đang hoạt động; Những thứ đơn giản như out.writeString, out.writeInt, in.readString() vv đang hoạt động hoàn hảo.Danh sách <String> readStringArray in Parcelable

Vấn đề của tôi là khi tôi muốn Ghép một mảng/Danh sách/ArrayList (Tôi đã thử tất cả).

Tôi hiện đang cố gắng với:

List<String> 

out.writeStringList() 

hoạt động tốt.

Eclipse gợi ý rằng có một

in.readStringList(List<String> list) 

để đọc dữ liệu mà lại. Nhưng nó không phải làm nó cho tôi.

Chúng ta phải đưa gì vào()?

Tôi đã cố gắng không có gì, với kết quả 'Thêm đối số để khớp ...' Tôi đã thử null, tham chiếu đến getter trong số những người khác; mà tất cả trả về lỗi 'không thể chuyển đổi từ void thành Danh sách'

Tôi không thể tìm thấy bất kỳ điều gì trong Nhà phát triển Android về việc này.

Có ai giúp được không?

Cảm ơn

Dave

Trả lời

19

'không thể chuyển đổi từ khoảng trống vào danh sách'

Từ lỗi mà có vẻ như bạn đang cố gắng để gán kiểu trả về của phương pháp readStringList(...) để biến số List<T>. Nói cách khác: bạn có thể viết một cái gì đó như:

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

? readStringList(...) trả về một khoảng trống, do đó có thể là những gì Eclipse đang phàn nàn. Bạn thực sự cần không phải đang cố gắng lấy kiểu trả về từ phương thức void - trong trường hợp này, bạn cần cung cấp biến mà kết quả sẽ được chỉ định làm tham số. Do đó, điều này sẽ đủ:

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

Bằng cách này, nếu bạn đang thực hiện Parcelable để có thể vượt qua đối tượng dữ liệu tương đối đơn giản giữa các hoạt động (sử dụng Intents), hãy xem xét sử dụng giao diện Serializable thay - nó sẽ giúp bạn tiết kiệm rất nhiều công sức, đặc biệt nếu bạn cần lặp lại quá trình tương tự cho nhiều đối tượng.

+0

Vậy là xong, cảm ơn. Không giống như String hoặc Integer, nơi bạn sẽ viết x = in.readString(), bạn trao đổi nó xung quanh để nó ở trong đó.readStringList (x) - trong đó x là Danh sách được tạo trước đây của bạn . Tôi biết rằng Parcelable là nhiều công việc để thiết lập, nhưng từ những gì tôi đã đọc về nó, hiệu suất của nó vượt xa của Serializable. Cảm ơn một lần nữa. – DaveSav

+0

HOUSEKEEPING: Nó đang hoạt động, sau đó tôi đã xóa mã của tôi và nó dừng lại. Nếu bạn cũng bị bối rối; câu trả lời, với mã, là tại http://idlesun.wordpress.com/2011/07/15/android-parcelable-example-2-sub-object-and-list/ – DaveSav

+0

+1 Đẹp một .. Tôi đã phải đối mặt cùng một vấn đề –

13

Viết thư cho bưu kiện:

out.writeStringList(yourStringList); 

đọc từ bưu kiện

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

Điều này làm việc cho tôi. – Arun

Các vấn đề liên quan