2014-02-28 165 views
-1

中的字符串將圖像設置爲imageView我在我的XML文件(tutor.xml)中有一組圖像名稱。
我想解析它並獲取我的圖像名稱,並將其設置爲ImageView在我的活動中。
它給出數據類型錯誤(不適用於圖像)它必須是一個整數。無法通過android

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的㈣,如果不通過字符串應如何設置我的圖片。
感謝

+0

的setImageResource()接受int類型的參數。您正在傳遞一個字符串。 int值應該指向資源文件夾 –

回答

2
R.drawable.xxx 

在Android中該語句將返回圖像的INT-ID,而不是字符串

在ImageView的setImageResource(INT) - 設置繪製因爲這樣的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); 
} 
+0

中的可繪製資源,我知道,但任何解決方案。因爲我有156張圖片要顯示,所以我無法在數組中進行管理。 –

+0

您的項目中的所有資源圖片都可以通過上層功能加載,您不需要管理它 –

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]); 
} 
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()); 
} 
0

請將此代碼用於幫助您

int id = getResId(「app_icon」);

iv.setImageResource(id);

公衆詮釋getDrableId(字符串VARIABLENAME){

try { 
     Class res = R.drawable.class; 
     Field idField = res.getDeclaredField(variableName); 
     return idField.getInt(idField); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return -1; 
    } 
}