2017-01-11 1 views
0

i) Class Place (hat 3 String-Variablen) ii) Class Coupon (hat 4 String-Variablen - 3 gleiche wie Class Place und eine zusätzliche String-Variable). Jetzt habe ich ArrayList des Objekts der Klasse Place, die in ArrayList des Objekts Class Coupon kopiert werden muss. SO, im Grunde sind 3 Variablen von Arraylist des Objekts Class Coupon identisch mit ArrayList des Objekts Class Place und vierte Variablen werden dann mit einem anderen String initialisiert. Wie kann ich das erreichen? Und wie kann ich das umgekehrt machen wie 3 Variablen der ArrayList des Objekts der Klasse Coupon in ArrayList des Objekts der Klasse Place kopieren. Bitte Hilfe.Kopieren von Arraylist von benutzerdefinierten Objekten (von Class Place) in Arraylist von benutzerdefinierten Objekten (von Class Coupon)

1. Class Place: 
public class Place implements Serializable{ 
    public String mPlace; 
    public String mOffer; 
    public String mImage; 


    public Place(String place, String offer, String image) { 
     this.mPlace = place; 
     this.mOffer = offer; 
     this.mImage = image; 
    } 
} 

2. Class Coupon: 
public class Coupon implements Serializable { 
    public String mPlace; 
    public String mOffer; 
    public String mImage; 
    public String mItemClicked; 

    public Coupon(String place, String offer, String image, String ItemClicked) { 
     this.mPlace = place; 
     this.mOffer = offer; 
     this.mImage = image; 
     this.mItemClicked = ItemClicked; 
    } 


} 
3. I have now two variables List<Place>mPlaces and List<Coupon>mCoupons. 
If one of variable has complete data then how I can copy it into another. 
+0

Stattdessen können Sie alle Variablen in der Klasse "Coupon" behalten und manipulieren. –

+0

Kannst du es mehr erklären, ich bin neu in der Programmierung.Basisch möchte ich einen Arraylist von Class Place und auch angeklicktem Artikelnamen an eine andere Aktivität aus der Hauptaktivität übergeben. Also dachte ich mir, ich würde das machen. Danke für die Hilfe. –

+0

Alle Elemente, die Sie in der Klasse 'Place' haben möchten, sind in der Klasse' Coupon' verfügbar. Warum brauchst du dann die Klasse 'Place'? Wenn Sie zwei verschiedene arraylist wünschen. Sie können wie 'Arraylist placesAl = new ArrayList <>();' und 'ArrayList couponsAl = new ArrayList <>();' Sie meinen Punkt? –

Antwort

0

Da Ihre Mitglieder Place.class ist selbe in Coupon.class, können Sie diese drei Mitglieder aus Coupon.class und nur soweit Place.class wie folgt entfernen:

public class Coupon extends Place implements Serializable { 

    public String mItemClicked; 

    public Coupon(String place, String offer, String image, String ItemClicked) { 
     this.mPlace = place; 
     this.mOffer = offer; 
     this.mImage = image; 
     this.mItemClicked = ItemClicked; 
    } 
} 

Dann nehme an, wenn Sie ein ArrayList<Coupon> list = new ArrayList<>(); haben, dann können Sie ganz einfach ein erstellen Liste der Place.class wie:

ArrayList<Place> placeList = new ArrayList<>(); 
for(Coupon coupon : couponList) { 
    placeList.add(coupon); 
} 

Ihr so ​​leicht werfen Gutschein Klasse t o Klasse platzieren.

EDIT:
Sie müssen neue Coupon Objekt für alle Place Objekt erstellen, der Grund ist, Wenn Sie Coupon Objekt erstellen, es Place Instanz haben, da es Place erstreckt, so können Sie direkt Coupon-Place werfen, aber man kann Wirf nicht direkt den Vice-Versa. Sie müssen also für jedes Place Objekt ein neues Coupon Objekt erstellen und den Wert festlegen. Wie:

ArrayList<Coupon> couponList = new ArrayList<>(); 
for(Place place : placeList) { 
    Coupon coupon = new Coupon(place.mPlace, place.mOffer, place.mImage, null); 
    couponList.add(coupon); 
} 

Hinweis: Wenn die ArrayList<Place> Sie haben durch Gießen Coupon Objekt erstellt wird, dann können Sie direkt die Place Objekt Coupon Objekt geworfen so dass in diesem Fall keine Notwendigkeit zur Schaffung neuer Coupon Objekt für alle Place Objekt .

+0

Danke, i) wenn ich die Coupon-Klasse definiere, wie Sie es vorgeschlagen haben, zeigt sie einen Fehler an - es gibt keinen Standard-Konstruktor, der in Class Place verfügbar ist.ii) Sobald es erledigt ist, wie kann ich umgekehrt tun, wenn ich es getan habe eine ArrayList mplaces = new ArrayList <>() dann kopieren Sie sie ArrayList

+0

Überprüfen Sie die Bearbeitung. –

+0

Danke mein Problem zu lösen. –

0

Sie können diese Methoden verwenden, um sie zu konvertieren.

Ich rate dringend, eine Basisklasse zu erstellen, die Felder hat, die zwischen diesen Klassen geteilt wird. Und andere Klassen erweitern es. Dann können Sie Polymorphie verwenden. Es wird deine Welt leichter laufen lassen.

Viel Glück.

Verwandte Themen