2016-08-03 9 views
0

ich bin neu mit Android Studio und ich habe Probleme, wie kann ich einige spezifische Daten/s von einem Arraylist zu einem anderen Arraylist übergeben. Ich arbeite gerade an einem Bestellsystem. Iam versuchen, die spezifischen Daten (Name, Preis & Menge) von meiner Arraylist in meine Arraylist, wenn Anzahl> 0Wie übermittele ich Daten zwischen ArrayLists?

Edited hinzufügen: Product

public class product_List extends ListFragment{ 
ArrayList<product> productList; 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     productList = new ArrayList<product>; 

     productList.add(new product("Pasta 1", $10.00, 0(this is for Quantity), R.drawable.pastaIcon1)); 

     } 
} 

ORDER

public class order_List extends ListFragment { 

ArrayList<order> orderList; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     orderList = new ArrayList<order>; 

     // HERE I want to add the product/s if its quantity > 0 
     } 
} 

Ich habe eine separate Klasse für product.class (string, double, int, int) und order.class (string, double, int). Ich habe auch ein ArrayAdapter für Produktliste, die Schaltflächen hat, die die Menge des Produkts erhöhen/verringern.

+8

Woha, eine Menge Code, den Sie hier posten. Vielleicht möchten Sie sich an die Hilfe wenden, um über die Bereitstellung von minimalen, realisierbaren Beispielen zu lesen. Sie werden sehen, dass Sie nicht viele Leute finden werden, die bereit sind, durch all das zu tauchen. Tipp x2: Bitte studieren Sie Java-Kodierungsstilkonventionen. Du benutzt _ nicht so; Klassennamen beginnen immer Großbuchstaben. Wenn Sie sich nicht an Konventionen halten, wird Ihr Code * für jeden mit angemessener Java-Erfahrung * schwerer lesbar. – GhostCat

+0

Ihr Code ist schwer zu lesen, da Sie grundlegende Namenskonventionen nicht befolgen, dh Klassen sollten immer Großgeschrieben werden. –

+0

Gegeben der Titel Ihrer Frage; Vielleicht möchten Sie diese Frage zu studieren: http://stackoverflow.com/questions/7042182/how-to-make-a-deep-copy-of-java-arraylist ... wahrscheinlich das gibt Ihnen das Wissen, das Sie beheben müssen dein Code. – GhostCat

Antwort

0

Im Allgemeinen, mit dem Code, den Sie gegeben haben, können Sie nicht einfach Daten zwischen diesen ArrayList "übergeben", weil sie unterschiedliche Typen sind, die kein Android-Entwicklungsproblem, sondern rein Java ist.

dieses Muster folgen, und Sie können „übergeben Daten zwischen den Listen“, aber die gesamte Lösung hier ist der Code restrukturieren Object Oriented Prinzipien zu folgen.

class Product { 
    int id; // Some unique identifer 
    String name; // What the product is called 
    double cost; // What it costs 
    int resourceId; // A resource ID for Android to draw for this 
} 

Dann wird eine „Kaffee“ Klasse ist zu beschreibende, vielmehr ist es nur ein „Produkt“, wo ein „Kaffee“ ist die Instanz dieses Produkts.

Product coffee = new Product("coffee"); 
ArrayList<Product> orders1 = new ArrayList<>(); 
orders.add(coffee); 

ArrayList<Product> orders2 = new ArrayList<>(); 
orders2.add(orders1.get(0)); // "passing" 

Sie könnten eine Order Klasse machen, dass extends Product, aber das scheint nicht ganz notwendig; Eine ArrayList<Product> kann beispielsweise als eine Instanz von Aufträgen oder Produktinventar betrachtet werden.


Fortgeschrittenere Android-Themen beinhalten Parcelable für diese Product Klasse implementieren. Aber bei der obigen Idee kommt es darauf an, Ihren Code sauberer zu strukturieren.

+0

Ich denke daran, mehrere Artikel aus verschiedenen Lebensmittelkategorien (Kaffee, Pasta, etc.) an die Order-Array zu übergeben, dann speichern sie in einer anderen Liste und leeren die Reihenfolge Array, um neue Aufträge zu nehmen .. meine Frage ist, ist es möglich ohne eine Datenbank oder sollte ich sqlite/mysql verwenden? –

+0

Es ist definitiv möglich, mit und ohne eine Datenbank, aber es ist zu viel Code erforderlich, um alle diese Details in einer Antwort hier zu schreiben –

+0

ich sehe, krank versuchen, eine neue Frage zu diesem Thema. Wenn es Ihnen nichts ausmacht, erkundigen Sie sich dort nach Ihren Eingaben. –

Verwandte Themen