我正在使用Etsy的Android Staggered视图库,我想在每个网格上添加数据。所以我使用switch语句代替for循环。但没有显示任何结果。是否有语法错误或我应该在这里使用任何其他语句? 我评论了最初存在的for循环。帮助我能够显示字符串。
package com.etsy.android.sample;
import java.util.ArrayList;
public class SampleData {
public static final int SAMPLE_DATA_ITEM_COUNT = 6;
public static ArrayList<String> generateSampleData() {
final ArrayList<String> data = new ArrayList<String>(SAMPLE_DATA_ITEM_COUNT);
switch (SAMPLE_DATA_ITEM_COUNT) {
case 0:
data.add("New Delhi");
break;
case 1:
data.add("Mumbai");
break;
case 2:
data.add("Kanpur");
break;
case 3:
data.add("Hyderabad");
break;
case 4:
data.add("Bangalore");
break;
case 5:
data.add("Noida");
break;
}
/*
for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; i++) {
data.add("SAMPLE #");
}
*/
return data;
}
}
答案 0 :(得分:4)
您无法使用for
语句替换switch
循环。它们用于完全不同的目的。 for
循环将运行
data.add("SAMPLE #");
六次,但你的switch语句只会执行一次,它会查找匹配6
的项目,在你的情况下没有一个,所以这就是为什么没有显示的原因。如果您将SAMPLE_DATA_ITEM_COUNT
的值更改为1
和5
之间的数字,则会看到一个项目。为了帮助您理解,您的switch
语句与以下if
语句完全相同:
if (SAMPLE_DATA_ITEM_COUNT == 0) {
data.add("New Delhi");
} else if (SAMPLE_DATA_ITEM_COUNT == 1) {
data.add("Mumbai");
} else if (SAMPLE_DATA_ITEM_COUNT == 2) {
data.add("Kanpur");
} else if (SAMPLE_DATA_ITEM_COUNT == 3) {
data.add("Hyderabad");
} else if (SAMPLE_DATA_ITEM_COUNT == 4) {
data.add("Bangalore");
} else if (SAMPLE_DATA_ITEM_COUNT == 5) {
data.add("Noida");
}
但在您的情况下SAMPLE_DATA_ITEM_COUNT
是6
,这就是您没有看到任何内容的原因。
要查看您的所有数据,您需要在for
语句周围添加switch
循环 - 例如:
for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; ++i) {
switch (i) {
case 0:
data.add("New Delhi");
break;
case 1:
data.add("Mumbai");
break;
case 2:
data.add("Kanpur");
break;
case 3:
data.add("Hyderabad");
break;
case 4:
data.add("Bangalore");
break;
case 5:
data.add("Noida");
break;
}
}
你可以简化一些事情并完全摆脱switch
语句和for
循环而只是这样做:
data.add("New Delhi");
data.add("Mumbai");
data.add("Kanpur");
data.add("Hyderabad");
data.add("Bangalore");
data.add("Noida");