Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从drawable获取图像_Java_Android_Arraylist - Fatal编程技术网

Java 从drawable获取图像

Java 从drawable获取图像,java,android,arraylist,Java,Android,Arraylist,我是android开发的初学者 我的问题是如何从drawables加载此图像 使用getResource函数创建适配器 以及如何将drawbles中的所有项放入adapter类 (这是我的示例数据类,其中图像加载到图像适配器) 公共类样本数据{ 公共静态最终整数样本数据项计数=20; 静态int-i; 公共静态ArrayList生成示例数据(){ String repeat=“repeat”; 最终ArrayList数据=新ArrayList(); 对于(i=0;i代码>是代码> 98 等等,您

我是android开发的初学者 我的问题是如何从drawables加载此图像 使用getResource函数创建适配器 以及如何将drawbles中的所有项放入adapter类 (这是我的示例数据类,其中图像加载到图像适配器)

公共类样本数据{
公共静态最终整数样本数据项计数=20;
静态int-i;
公共静态ArrayList生成示例数据(){
String repeat=“repeat”;
最终ArrayList数据=新ArrayList();
对于(i=0;i< /代码> 如果您认为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; 
}
publicstaticarraylist生成示例数据(上下文){
String repeat=“repeat”;
最终ArrayList数据=新ArrayList();
对于(i=0;i

如果Drawable遵循相同的命名约定,则不需要开关或if构造,只需要循环。当然,您需要上下文来访问资源,因此如果可提取数据的数量等于示例数据项计数,我就更改了方法的签名-

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;
final ArrayList data=new ArrayList();
最终整数[]可提取项={
可抽出的,可抽出的,可抽出的。。。
};
对于(i=0;i

这将在每次迭代中保存一系列ifs/switch语句,以及对系统的更昂贵调用。

使用
switch
语句。它的效率不比
。只是
更优雅一些
。我想知道答案,但我得到了一个错误值string不能应用。错误:(72,92)错误:方法生成类中的示例数据SampleData不能应用于给定的类型;必需:找到上下文:没有参数原因:实际参数列表和形式参数列表长度不同是的,该方法将上下文对象作为参数。您可以帮助我解决问题吗?您应该为该方法提供上下文。例如,如果您在创建活动时调用它,您可以使用
this
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;