从drawable获取图像

时间:2015-09-15 14:58:25

标签: java android arraylist

我是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;
}

}

2 个答案:

答案 0 :(得分:1)

如果你认为ascii表中的char a是十进制97b98等等,你可以做的是

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语句,以及对系统进行更昂贵的调用。