2012-07-09 28 views
14

Tôi có một ArrayList<ItemList>làm thế nào để serialize/deserialize ArrayList (Object)

nơi ItemList là:

public class ItemList { 
    public ArrayList<Item> it = new ArrayList<Item>(); 
    public String name = ""; 

    public ItemList() { 
    } 
} 

và khoản là:

public class Item { 
    public String name = ""; 
    public int count = 0; 

    public Item() { 
    } 
} 

tôi cố gắng serialize danh sách này:

try { 
      FileOutputStream fileOut = new FileOutputStream(sdDir + serFile); 
      ObjectOutputStream out = new ObjectOutputStream(fileOut); 
      out.writeObject(List_Of_Lists); 
      out.close(); 
      fileOut.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Tôi thi nk đó là công việc, bởi vì tôi tìm thấy tập tin này trong thư mục.

Nhưng tôi không thể deserialize từ tập tin để ArrayList<ItemList>

mã:

 try { 
      FileInputStream fileIn = new FileInputStream(sdDir + serFile); 
      ObjectInputStream in = new ObjectInputStream(fileIn); 
      List_Of_Lists = (ArrayList<ItemList>) in.readObject(); 
      Log.i("palval", "dir.exists()"); 
      in.close(); 
      fileIn.close(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Làm thế nào tôi có thể deserialize ArrayList<ItemList> này? Tôi luôn bắt IOException.

+0

Vui lòng đăng toàn bộ stacktrace ngoại lệ – Tomer

+0

Bạn có đang tuần tự hóa danh sách mảng chỉ có nghĩa là biến "nó" hoặc lớp ItemList không? – prashant

+0

'Tôi luôn luôn bắt IOException'. Có nhưng bạn đã đọc tin nhắn chứa trong đó chưa? Nó chứa câu trả lời. – EJP

Trả lời

13

bạn ItemItemList lớp cần implements Serializable

+1

thx, bây giờ nó hoạt động. – Val

+0

Mục thực hiện là gì? Nó có thể thực thi tuần tự cùng một lúc không? –

+0

@ the_prole Tôi không chắc chắn ý của bạn là gì bởi "Mục thực hiện là gì?". Về "nó có thể thực hiện serializable cùng một lúc" có lẽ có kể từ khi lớp có thể thực hiện nhiều giao diện và 'Serializable' không thực sự giới thiệu bất kỳ phương pháp mới vì vậy không nên có bất kỳ xung đột. – Pshemo

-1

Tôi giả sử bạn đã đăng các ItemList không Item .....

ArrayList<ItemList> arr = (ArrayList<ItemList>) in.readObject(); 

for (ItemList a : arr) 
    { 
     // In this loop by iterating arr, you will get the whole List of ItemList 

    } 
+0

w8. Tôi sẽ thử ... – Val

+0

ok..hãy thử và cho tôi biết..chúng tôi không có mã hoàn chỉnh của bạn, vì vậy khó đoán được mục –

+0

, ItemList cần phải triển khai Serializable. – Val

0

nếu bạn đã thực hiện lớp con sau đó thêm phương pháp serializabe để cha mẹ nó sẽ loại bỏ lỗi.

+0

Bạn có ví dụ về mã không? – mhatch

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