解析错误 - 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。
答
我可以给ü一个答案,但你不应该(实在不应该)做...
,而不是
Integer icon= Integer.valueOf("R.drawable."+image.get(i));
尝试
R.class.getField("R.drawable."+image.get(i)).getInt(null)
这种方法看起来更好 – Selvin 2011-04-27 13:39:40
thx为我工作! – Swellwave 2011-05-03 11:20:02