解析错误 - Android java

问题描述:

我想用图标动态地填充gridview。我遵循gridview hello教程。然而,图像阵列并不总是完全一样的。根据之前的动作,给出由图标名称构成的不同的image array(从肥皂响应中提取),例如, agenda => agenda.png。我想通过在数组中循环并将其与R.drawable + icon_name相加来创建该数组。但是R.drawable无法解析到所请求的Integer数组。解析错误 - Android java

public class ImageAdapter extends BaseAdapter 
{ 
    private Context mContext; 
    final ArrayList<String> image = getIntent().getStringArrayListExtra("image"); 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return icoontjes.size(); 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public ArrayList<Integer> icoontjes; 
    { 
     for (int i=0; i<image.size(); i++){ 
      Integer icon= Integer.valueOf("R.drawable."+image.get(i)); 
      icoontjes.add(icon); 
     } 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(icoontjes.get(position)); 
     return imageView; 
    } 
} 

您可以使用

for (int i=0; i < image.size(); i++) { 
    Integer icon = getResources().getIdentifier(image.get(i), "drawable", "your.package"); 
    icoontjes.add(icon); 
} 

其中your.package是您的Android应用程序的基本包(您已定义您的static final R class的包。

这种方式的icon变量会根据您的image.get(i)保存您的drawable的id。

+0

这种方法看起来更好 – Selvin 2011-04-27 13:39:40

+0

thx为我工作! – Swellwave 2011-05-03 11:20:02

我可以给ü一个答案,但你不应该(实在不应该)做...

,而不是

Integer icon= Integer.valueOf("R.drawable."+image.get(i)); 

尝试

R.class.getField("R.drawable."+image.get(i)).getInt(null)