2017-03-27 13 views
1

In meinem Projekt habe ich eine Array-Liste wie folgt aus:Android Arraylist Multidimensional Arraylist

{"data": 
[ 
{"Title": "Fiat 500", "Url":"http://lh5.ggpht.com/-wgCH-P1bWCo/UWW_eCUXsVI/AAAAAAAMaKI/MlRF0GzwF8Y/s1200/Fiat-Abarth-500-US-6%25255B2%25255D.jpg"}, 
{"Title": "Alfa Romeo", "Url": "http://i.auto-bild.de/ir_img/1/2/4/5/4/9/7/Alfa-Romeo-4C-Spider-Vorstellung-und-Preis-1200x800-24a91d418ddbd1fa.jpg"}, 
{"Title": "500L", "Url":"http://cdn1.autoexpress.co.uk/sites/autoexpressuk/files/fiat-500-turbo-front-action.jpg"}, 
{"Title": "Egea", "Url":"https://pbs.twimg.com/media/C6vp_VcU4AAaM0t.jpg"}, 
{"Title": "Maserati", "Url":"http://lh4.ggpht.com/-CjXVq7s2roU/U06cyjInzjI/AAAAAAAQwvI/xuJUZ0BbOUw/s1200/Maserati-Centennial-1%25255B2%25255D.jpg"}, 
{"Title": "Lancia", "Url":"http://lh6.ggpht.com/_FoXyvaPSnVk/TWl73Gr0lmI/AAAAAAAECw0/ZK7nAKZ6mdY/s1200/Lancia-Chrysler-30%5B5%5D.jpg"}, 
{"Title": "Jeep", "Url":"http://lh3.ggpht.com/-1UvJYZn4fR0/UyGvPSDIrZI/AAAAAAAQdR0/s2c70tIu1i0/s1200/Jeep-2%25255B3%25255D.jpg"}, 
{"Title": "Ferrari", "Url":"http://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2016/02/05/103366052-1957s.jpg?v=1454698344"}, 
{"Title": "Alfa Romeo", "Url":"http://lh3.ggpht.com/-lYmpe0bGJko/UnqlBB040wI/AAAAAAAO4yE/HbUaH9RxWR8/s1200/Alfa-Romeo-Gloria-Concept-by-IED-1%25255B4%25255D.jpg"}, 
{"Title": "Maserati", "Url":"http://zonderpump.com/images/maserati-granturismo-sport-can-you-feel-it2.jpg"} 
] 
} 

und ich möchte Elemente hinzufügen like this jedoch viewpager und Adapter nur ein Element erhalten. Also möchte ich meine ArrayList Dimensional machen und Text wie folgt setzen: textview.setText (list.getUsername [0 oder 1]);

Wie kann ich das tun. Vielen Dank. Durch die Art, wie ich diesen Code gefunden:

function listToMatrix(list, elementsPerSubArray) { 
    var matrix = [], i, k; 

    for (i = 0, k = -1; i < list.length; i++) { 
     if (i % elementsPerSubArray === 0) { 
      k++; 
      matrix[k] = []; 
     } 

     matrix[k].push(list[i]); 
    } 

    return matrix; 
} 

var matrix = listToMatrix([1, 2, 3, 4, 4, 5, 6, 7, 8, 9], 3); 
// result: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

aber wie kann ich diese Arraylist Artikel.?

Antwort

1

Es sieht so aus, als ob Ihre Daten im JSON-Format vorliegen. dann sollten Sie lieber in bestehende Technologien schauen; nicht nur zum Parsen; aber auch für "wie man meine Daten modelliert"; siehe here als Ausgangspunkt.

Aber um Ihre eigentliche Frage zu beantworten - schauen wir uns verschiedene Optionen an.

Erstens, Ihr eigener Vorschlag eine zwei-dim-Liste. Das würde aussehen wie:

Die Idee: Sie erstellen solche Zeilenlisten für jede Eingabezeile; und dann fügen Sie diese Zeilen zu Ihrer Matrixliste hinzu.

Aber wenn Sie genauer hinsehen, finden Sie, dass die erste und dritte Spalte ein "Schlüssel" für die zweite/vierte Spalte sind. So eine bessere Passform könnte sein:

List<Map<String, String>> matrix = new ArrayList<>(); 
// and then for each row (giving you code that creates similar data) 
Map<String, String> row = new HashMap<>(); 
row.put("Title", "Fiat 500"); ... 
matrix.add(row); 

Bedeutung: Sie verwenden eine Datenstruktur, die die Mapping zum Beispiel zwischen der ersten und der zweiten Säule erhalten bleibt.

Schließlich verwendeten wir bis jetzt "flache" Datenstrukturen. Aber wir könnten stattdessen eine spezielle Klasse bauen, wie:

public class CarPictureInfo { 
    private final String title; 
    private final URL url; 

    public CarPictureInfo(String title, URL url) ... 

Und jetzt erstellen Sie ein List<CarPictureInfo> Objekte; und verwenden Sie die Daten einer Zeile, um ein CarPictureInfo-Objekt zu erstellen. (Bitte beachten Sie: Ich habe hier vorgeschlagen, diese URL nicht als "rohe" Zeichenfolge zu speichern, sondern in einen Typ umzuwandeln, der mehr Bedeutung als gut, eine rohe Zeichenfolge) hat.

Diese Optionen haben verschiedene Vor- und Nachteile; Und am Ende kommt es darauf an, was Sie mit Ihren Daten machen wollen, um zu verstehen, welche Lösung am besten zu Ihren Bedürfnissen passt.

+0

Danke für die Antwort. Es hilft mir viel. –

+0

Sie sind herzlich willkommen. Und komm an dem Tag, an dem du die Upvote-Rechte erreichst, denk bitte daran, vielleicht zurück zu kommen und gut zu üben, upboting hier zu üben ;-) – GhostCat