2017-03-27 54 views
1

在我的項目,我有這樣一個數組列表:Android的ArrayList中,以多維的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"} 
] 
} 

,我想添加項目like this 然而viewpager和適配器只能得到一個項目。所以我想讓我的ArrayList維度和像這樣設置文本︰textview.setText(list.getUsername [0 or 1]);

我該怎麼做。非常感謝。 通過我發現這個代碼的方式:

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

,但我怎樣才能使此ArrayList的項目?

回答

1

它看起來像你的數據是JSON格式;那麼你應該看看現有的技術;不僅用於解析;還包括「如何建模我的數據」;以here爲起點。

但回答你的實際問題 - 讓我們看看不同的選擇。

首先,您自己的建議是一個雙昏名單。這看起來像:

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

想法:你爲每個輸入行創建這樣的行列表;然後將這些行添加到矩陣列表中。

但是當你仔細看看時,你會發現第一列和第三列是第二/第四列的「關鍵」。所以,更好的貼合可能是:

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

含義:您使用保留的數據結構例如第一和第二列之間的映射

最後,到目前爲止,我們使用的是「扁平」數據結構。但是,我們可以改爲建立一個特殊的類,如:

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

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

現在你創建一個List<CarPictureInfo>對象;並使用一行數據創建一個CarPictureInfo對象。 (請注意:我在這裏建議不要將該URL存儲爲「原始」字符串,而是將其轉換爲具有更多含義的類型,而不是原始字符串)。

這些選項有不同的優缺點;最終取決於您想要對數據做什麼,以瞭解哪種解決方案最適合您的需求。

+0

感謝您的回覆。這對我很有幫助。 –

+0

非常歡迎。當你達到最佳的權利時,請記得或許回來,並且在這裏練習upvoting ;-) – GhostCat