2017-04-15 3 views
0

Ich möchte die Daten in einer ArrayList speichern und darauf in einer anderen Klasse zugreifen, aber wenn ich auf die arraylist zugreifen, ist die arraylist.size() 0.Means Ich habe nicht auf die gleiche Arraylist zugegriffen. Jemand bitte sag mir, was ich falsch mache.Wie initialisiere ich Arraylist, die in einer Pojo-Klasse in einer anderen Aktivität speichern?

Hier ist meine POJO Klasse

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 

Hier ist, wie ich die Daten in Klasse A, die ich überprüft, ist stecken Sie ihn erfolgreich in die Arraylist.

Klasse A

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

Das Problem ist in Klasse B, wenn ich Zugriff auf die item.size() es Wert 0 zurück, bedeutet, dass ich Zugang zu der gleichen Arraylist Ball hielt. Hier

ist, was ich in Klasse B gemacht

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

ich das versuchte, die ich in RecycleView vorher getan, aber das funktioniert nicht, weil meine Klasse B ist ein Fragment Aktivität

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

Also, was ist der richtige Weg für mich initialisieren die Arraylist, die ich Daten in Klasse A in Klasse B zu initialisieren?

+0

Sie Ihre Liste von Klasse A bis Klasse B übergeben müssen –

+0

@can u mir ein Beispiel geben? – ken

+0

Warte ich Beitragscode –

Antwort

1

Änderung Klasse wie folgt:

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; 
} 

jetzt in Klasse 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); 

nun in der Klasse B, erhalten Liste:

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(); 
       } 

Für Bruchstück passieren wie:

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

Und Fragment holen:

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

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

bro, wenn ich 'Bündel' verwende ist immer noch das gleiche richtig? – ken

+0

Ursache Klasse B ist ein fragement – ken

+0

ok danke bro..Ich teste jetzt – ken

Verwandte Themen