Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android ArrayList to Multidimensional ArrayList

In my project i have a array list like this :

{"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"}
]
}

and i want to add items like this however viewpager and adapter get one item only. So i want to make my ArrayList dimentional and set text like this : textview.setText(list.getUsername[0 or 1]);

how can i do this. Thanks much. By the way i found this code :

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]]

but how can i make this arraylist items.?

like image 767
Canberk Çakmak Avatar asked May 18 '26 14:05

Canberk Çakmak


1 Answers

It looks like your data is in JSON format; then you should rather look into existing technologies; not only for parsing; but also for "how to model my data"; see here as starting point.

But to answer your actual question - let's look into different options.

First, your own suggestion a two-dim list. That would look like:

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

matrix.add(row);

The idea: you create such row lists for each input line; and then you add those rows to your matrix list.

But when you have a closer look you find that the first and third column are a "key" for the second/forth column. So a better fit could be:

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

Meaning: you use a data structure that preserves that mapping between first and second column for example.

Finally, so far we were using "flat" data structures. But we could instead build a special class, like:

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

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

And now you create a List<CarPictureInfo> objects; and use the data of one row to create one CarPictureInfo object. (please note: I suggested here to not store that URL as "raw" String, but to convert it into a type that has more meaning than well, a raw string).

These options have different advantages and disadvantages; and in the end it depends on what you want to do with your data to understand which solution best fits your needs.

like image 74
GhostCat Avatar answered May 21 '26 04:05

GhostCat



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!