2017-04-15 66 views
0

我想將數據存儲在ArrayList中並在另一個類中訪問它,但是當我訪問arraylist時,arraylist.size()爲0.表示我沒有訪問相同的數組列表。有人請告訴我我做錯了什麼。如何初始化在另一個活動中存儲在Pojo類中的ArrayList?

這裏是我的POJO類

public class item { 
    private String name; 
    private String body; 
    private String profileImage; 

public Item(){ 

} 

public Item(String body,String name,String profileImage){ 
    this.body = body; 
    this.name = name; 
    this.profileImage = profileImage; 
} 
//Getter and setter 

這裏是我的數據存儲在A類,我檢查,成功地將其插入到ArrayList。

A類

List<Item> items = new ArrayList<>(); 
Item item = new Item(); 
item.setBody(body); 
item.setName(name); 
item.setProfileImage(profileImage); 
items.add(item); 

的問題是在乙類當我訪問item.size()它返回值0,意味着我沒有訪問相同的數組列表。

這裏是我的B中類完成

List<Item>items = new ArrayList<>(); 
Log.d("ListSize",String.valueOf(items.size())); 

我想這是我在RecycleView做過,但這並不工作,因爲我的B類是片段活動

public Class B(Context mContext, List<Item> items) { 
    this.mContext = mContext; 
    this.items = items; 
} 

那麼我有什麼正確的方法來初始化我將數據保存到A類在B類

+0

需要從類通過你的列表,以B級 –

+0

@can你給我一些例子嗎? – ken

+0

等我我的帖子代碼 –

回答

1

變化類是這樣的:

public class Item implements Parcelable{ 
    private String name; 
    private String body; 
    private String profileImage; 

public Item(){ 

} 

public Item(Parcel in) { 
      name = in.readString(); 
      body = in.readString(); 
      profileImage = in.readString(); 
     } 


@Override 
     public int describeContents() { 
      return 0; 
     } 


     @Override 
     public void writeToParcel(Parcel dest, int flags) { 
      dest.writeString(name); 
      dest.writeString(body); 
      dest.writeString(profileImage); 
     } 

     @SuppressWarnings("unused") 
     public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>() { 
      @Override 
      public Item createFromParcel(Parcel in) { 
       return new Item(in); 
      } 

      @Override 
      public Item[] newArray(int size) { 
       return new Item[size]; 
      } 
     }; 


public Item(String body,String name,String profileImage){ 
    this.body = body; 
    this.name = name; 
    this.profileImage = profileImage; 
} 

現在在A類:

ArrayList<Item> mDATA = new ArrayList<>(); 

/****** add values in array list ****/ 

       Intent i = new Intent(CLASS_A.this, CLASS_B.class); 
       i.putParcelableArrayListExtra("ARRAY_DATA", mDATA); 
       startActivity(i); 

現在B類,獲取列表:

Intent intent = getIntent(); 
    ArrayList<Item> mDATAFROMA = new ArrayList<>(); 
    try { 
        mDATAFROMA = intent.getParcelableArrayListExtra("ARRAY_DATA"); 
        Log.d("ListSize",String.valueOf(mDATAFROMA.size())); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

對於fragement傳似:

Bundle args = new Bundle(); 
     args.putParcelableArrayList("GET_LIST", (ArrayList<? extends Parcelable>) mDATA); 
     fragmentDemo.setArguments(args); 

而在片段獲取:

ArrayList<Item> mDATAFROMA = new ArrayList<>(); 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Bundle pb=getArguments(); 
     mDATAFROMA = pb.getParcelableArrayList("GET_LIST"); 
    } 
+0

兄弟,如果我使用'bundle'仍然是一樣的權利? – ken

+0

原因B類是fragement – ken

+0

確定感謝兄弟..我現在測試 – ken