我的XML文件(tutor.xml)中有一组图像名称
我正在尝试解析它并获取我的图像名称并在我的活动中设置为 ImageView 。
它给出数据类型错误(不适用于图像)它必须是整数。
try {
getAlphabet = getFromXML(MainActivity.this);
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String[] str = getAlphabet.split("\n");
int lenAcAlp = str.length;
String[] textFileLink = new String[lenAcAlp];
String res = "R.drawable.";
int key=0;
while(key<lenAcAlp){
textFileLink[key] = res + str[key];
}
ImageView iv = (ImageView)findViewById(R.id.imageView1);
for(int i=0;i<lenAcAlp;i++){
iv.setImageResource(textFileLink[i]);
}
}
private String getFromXML(MainActivity mainActivity)throws XmlPullParserException, IOException {
StringBuffer stringBuffer = new StringBuffer();
Resources res = mainActivity.getResources();
XmlResourceParser xpp = res.getXml(R.xml.tutor);
xpp.next();
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
if(eventType == XmlPullParser.START_TAG){
if(xpp.getName().equals("tutorappdata")){
stringBuffer.append(xpp.getAttributeValue(null, "keyitem") +"\n"); }
}
eventType = xpp.next();
}
return stringBuffer.toString();
}
请帮助我:我应该如何将图像设置为 ImageView iv,如果不是通过字符串如何设置我的图像。
感谢
答案 0 :(得分:2)
R.drawable.xxx
在Android中,此语句将返回图像的int -ID,而不是STRING
在ImageView中setImageResource(int) - 将drawable设置为此ImageView的内容。
请检查:http://developer.android.com/reference/android/widget/ImageView.html
在您的情况下,请尝试此代码
for(int i=0;i<lenAcAlp;i++){
int id = getResources().getIdentifier(textFileLink[i], "drawable", getPackageName());
iv.setImageResource(id);
}
答案 1 :(得分:0)
你可以将所有图像资源id作为一个int数组......就像这样;
int[] images = new int[]{R.drawable.xx,R.drawable.xxx,R.drawable.xxxxx};
for(int i=0;i<images.length();i++){
iv.setImageResource(images[i]);
}
答案 2 :(得分:0)
对我来说,一个好方法是创建一个ImageView适配器(例如:http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/)
然后在您的活动中调用OnCreate活动并填充ArrayList的解析方法
然后感谢您的适配器和ArrayList,您可以在imageView中设置图像(这里是代码的一部分示例):
ArrayList<YourObjectImage> _filePaths;
//Adapter constructor
public ImageViewAdapter(Activity activity, ArrayList<YourObjectImage> filePaths) {
this._activity = activity;
this._filePaths = filePaths;
}
[Code here check my link above]
ImageView yourImage = (ImageView) imageView.findViewById(R.id.imageHere);
Image img = (Image) _filePaths.get(position); //here image is your object "image" in your case
if(yourImage != null){
yourImag.setImageResource(img.getId());
}
答案 3 :(得分:0)
请此代码可以帮助您
int id = getResId(“app_icon”);
iv.setImageResource(ID);
public int getDrableId(String variableName){
try {
Class res = R.drawable.class;
Field idField = res.getDeclaredField(variableName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}