2016-04-22 3 views
-1

gedruckt wurde. Ich habe eine Weile gesucht und daran gearbeitet, aber ich kann einfach nicht den besten Weg finden dies zu tun. Also in meiner Android-App habe ich zwei Arraylist. Eines, das die Tage hält und ein anderes, das Gegenstände enthält, die an diesen Tagen gekauft wurden. Was ich tun möchte, ist dies in eine Textansicht zur Anzeige auszudrucken. Ich denke daran, eine Zeichenfolge zu verwenden, um das aktuelle Datum zu halten und zu sehen, ob es dem vorherigen Datum entspricht. Wenn es dann nicht gedruckt wird, drucken Sie einfach das "" und das Element direkt daneben. Die Liste basiert auf den Zeiten, nicht auf den Daten. Daher ist die Array-Liste von Daten in einigen Fällen identisch. So würde Ich mag es so etwas wie diesesWie bestimmt man, ob Daten in einer Array-Liste gedruckt oder nicht ausgedruckt werden sollen, wenn der gleiche Wert vor

2016/12/1 Item1 
      Item2 
      Item3 
2016/01/3 Item1 
      Item2 
2016/02/25 Item1 

aber jetzt ist es ist wie diese

2016/12/1 Item1 
2016/12/1 Item2 
2016/12/1 Item3 
2016/01/3 Item1 
2016/01/3 Item2 
2016/02/25 Item1 

Dies ist, was ich bisher:

public class MainActivity extends AppCompatActivity { 

ArrayList<String> myDates = new ArrayList<String>(); 
ArrayList<String> myProducsts = new ArrayList<String>(); 

TextView dates, products; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    dates = (TextView)findViewById(R.id.dates); 
    products = (TextView)findViewById(R.id.products); 

    //for total of 5 orders 
    myPurchase first, second, thrid, fourth, fifth; 

    myDates.add("2016/3/30:"); 
    myDates.add("2016/3/30:"); 
    myDates.add("2016/3/30:"); 
    myDates.add("2016/3/30:"); 
    myDates.add("2016/3/30:"); 
    myDates.add("2016/4/8:"); 
    myDates.add("2016/4/8:"); 

    myProducsts.add("Item1"); 
    myProducsts.add("Item2"); 
    myProducsts.add("Item3"); 
    myProducsts.add("Item4"); 
    myProducsts.add("Item5"); 
    myProducsts.add("Item6"); 
    myProducsts.add("Item7"); 

    for(int i = 0; i < myDates.size(); i++) 
    { 
     String next = myDates.get(i); 
     String nextPro = myProducsts.get(i) + "\n"; 
     dates.append(next + nextPro); 
    } 



} 

Danke für jede Hilf dabei.

Antwort

2

Sie können Ihre for-Schleife-Logik wie folgt ändern.

Sie müssen mit einigen String-Formatierung beschäftigen, um die Ausgabe aufgereiht wie Sie wollen.

+2

Fast. 'currentDate' sollte als 'null' beginnen. Siehe meine vorgeschlagene Änderung. – GoGoCarl

+1

Oh guter Fang. (Eigentlich sollte es als leere Zeichenfolge beginnen, um einen Nullzeiger zu vermeiden :)) –

+2

Eigentlich würde ich die Gleichheitsüberprüfung invertieren. Gegeben, dass next nicht-null ist, überprüfe, ob 'next.equals (currentDate)' anstelle von 'currentDate.equals (next)' ... jetzt, keine NPE. – GoGoCarl

Verwandte Themen