我是android开发的初学者 我的问题是如何从drawables加载这个图像 使用getResource函数进行适配 以及如何将drawbles中的所有项目放入适配器类中 (这是我的示例数据类,其中图像被加载到图像适配器)
public class SampleData {
public static final int SAMPLE_DATA_ITEM_COUNT = 20;
static int i;
public static ArrayList<Data> generateSampleData() {
String repeat = " repeat";
final ArrayList<Data> datas = new ArrayList<Data>();
for (i = 0; i < SAMPLE_DATA_ITEM_COUNT; i++) {
Data data = new Data();
if (i == 0) {
data.imageUrl = R.drawable.a;
}
if (i == 1) {
data.imageUrl = R.drawable.b;
}
if (i == 2) {
data.imageUrl = R.drawable.c;
} else if (i == 3) {
data.imageUrl = R.drawable.d;
} else if (i == 4) {
data.imageUrl = R.drawable.e;
} else if (i == 5) {
data.imageUrl = R.drawable.f;
} else if (i == 6) {
data.imageUrl = R.drawable.g;
} else if (i == 7) {
data.imageUrl = R.drawable.h;
} else if (i == 8) {
data.imageUrl = R.drawable.i;
} else if (i == 10) {
data.imageUrl = R.drawable.j;
} else if (i == 11) {
data.imageUrl = R.drawable.k;
} else if (i == 12) {
data.imageUrl = R.drawable.l;
} else if (i == 13) {
data.imageUrl = R.drawable.m;
} else if (i == 13) {
data.imageUrl = R.drawable.m;
} else if (i == 13) {
data.imageUrl = R.drawable.o;
} else if (i == 13) {
data.imageUrl = R.drawable.p;
} else if (i == 13) {
data.imageUrl = R.drawable.q;
}
/*data.title = "Gif Card";
data.description = "Super awesome description";
Random ran = new Random();
int x = ran.nextInt(i + SAMPLE_DATA_ITEM_COUNT);
for (int j = 0; j < x; j++)
data.description += repeat;*/
datas.add(data);
}
return datas;
}
}
答案 0 :(得分:1)
如果你认为ascii表中的char a
是十进制97
,b
是98
等等,你可以做的是
public static ArrayList<Data> generateSampleData(Context context) {
String repeat = " repeat";
final ArrayList<Data> datas = new ArrayList<Data>();
for (i = 0; i < SAMPLE_DATA_ITEM_COUNT; i++) {
Data data = new Data();
data.imageUrl = context.getResources().getIdentifier(String.valueOf((char)(97+i)), "drawable", context.getPackageName());
datas.add(data);
}
return data;
}
如果您的drawable遵循相同的命名约定,您将不再需要switch或if构造,而只需要循环。当然,您需要使用Context来访问资源,因此我更改了方法的签名
答案 1 :(得分:0)
如果drawable的数量等于您的SAMPLE_DATA_ITEM_COUNT -
final ArrayList<Data> datas = new ArrayList<Data>();
final int[] drawables = {
R.drawable.a, R.drawable.b, ...
};
for (i = 0; i < drawables.length; i++) {
Data data = new Data();
data.imageUrl = drawables[i];
datas.add(data);
}
return datas;
这样可以在每次迭代中保存一系列ifs / switch语句,以及对系统进行更昂贵的调用。