有三个列表数组,列表[0],列表[1],列表[2] 我想获取列表[1],该列表给出了主题的名称,主题来自服务器。
以下是我需要的输出:
学生科目:
数学
物理
化学
印地语
英
道德科学但我正在
学生科目:
数学
物理
化学
我不明白为什么会这样。
我正在使用这段代码:
List<Items>[] students = ActivityStudents.getStudentDetails();
for (int i = 0; i < students[1].size(); i++) {
subjects.append("\n" + students[1].get(i) + "\n");
}
请帮忙。
答案 0 :(得分:0)
您依赖的项目列表长度相等。显然情况并非如此。正如您所描述的那样lists[0]
包含3个元素,lists[1]
包含6.您只收集lists[0]
中找到的项目,因此您将停在3。
虽然我不了解可能不需要的数据结构,但您应该计入最大列表大小,然后在循环中处理更短的列表。
或单独循环列表。
List<Items> results = new ArrayList<Items>();
List<Items>[] lists = ActivityStudents.getStudentDetails();
int maxIdx = Math.max(lists[0].size(), lists[1].size();
maxIdx = Math.max(maxIdx, lists[2].size());
for (int i = 0; i < maxIdx; i++) {
Items items= new Items(SOURCE);
if( i < lists[0].size() ) items.set("STUDENT", lists[0].get(i));
if( i < lists[1].size() ) items.set("SUBJECTS", lists[1].get(i));
if( i < lists[2].size() ) items.set("MARKS", lists[2].get(i));
results.add(items);
}