Can*_*mak 3 android arraylist multidimensional-array
在我的项目中,我有一个像这样的数组列表:
{"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"}
]
}
Run Code Online (Sandbox Code Playgroud)
我想添加这样的项目 ,但是 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]]
Run Code Online (Sandbox Code Playgroud)
但我怎样才能制作这个数组列表项目呢?
看起来你的数据是JSON格式的;那么你应该研究现有技术;不仅用于解析;还有“如何对我的数据进行建模”;请参阅此处作为起点。
但为了回答你的实际问题 - 让我们看看不同的选择。
首先,您自己建议一个两维列表。那看起来像:
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);
Run Code Online (Sandbox Code Playgroud)
想法:为每个输入行创建这样的行列表;然后将这些行添加到矩阵列表中。
但是当您仔细观察时,您会发现第一列和第三列是第二列/第四列的“关键”。所以更合适的可能是:
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);
Run Code Online (Sandbox Code Playgroud)
含义:例如,您使用的数据结构保留第一列和第二列之间的映射。
最后,到目前为止我们使用的是“平面”数据结构。但我们可以构建一个特殊的类,例如:
public class CarPictureInfo {
private final String title;
private final URL url;
public CarPictureInfo(String title, URL url) ...
Run Code Online (Sandbox Code Playgroud)
现在你创建一个List<CarPictureInfo>对象;并使用一行数据创建一个 CarPictureInfo 对象。(请注意:我建议不要将该 URL 存储为“原始”字符串,而是将其转换为比原始字符串更有意义的类型)。
这些选项有不同的优点和缺点;最终,这取决于您想要如何处理数据,以了解哪种解决方案最适合您的需求。