无法在android中通过字符串将图像设置为imageView

时间:2014-02-28 10:26:42

标签: android android-imageview xmlpullparser

我的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,如果不是通过字符串如何设置我的图像。
感谢

4 个答案:

答案 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;
    } 
}