2017-04-15 22 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

相关问题