2015-06-19 401 views
-1

我只是想知道你是否有人知道如何做到這一點。我有一個有關鍵值對的活動,如果關鍵字等於一個字符串,我試圖顯示一個圖像,否則不顯示任何圖像。如何動態添加圖像到圖像查看

有誰知道如何或從哪裏開始試圖讓這個工作正確嗎?

final String splitedDouble[] = companyString.split(",,"); 

    String[] arrayOfString = { "Beard Vape Co;beard_vape_co", "two;zwei", "three;drei" }; 

    Hashtable<String, String> hashTable = new Hashtable<String, String>(); 
    for(String s: arrayOfString){ 
     String[] array = s.split(";"); 
     String sKey ="", sValue=""; 
     if(array.length > 1){ 
      sKey = array[0]; sValue = array[1]; 
      hashTable.put(sKey, sValue); 
      if(sKey.toString().equals(liquidCompany)){ 
       imageView.setImageResource(Integer.parseInt("R.drawable." + sValue.toString())); 
      } 
     } 

這就是我對循環

+0

添加一些代碼來顯示你在做什麼。順便說一句,你可以使用View.setVisibility()來顯示/隱藏你的ImageView。 –

+0

好聽起來很好對不起,我得到了循環了,我試圖讓工作,但迄今沒有運氣 –

+0

好吧。它有什麼問題? –

回答

0

所以這是解決這個我是有我知道它不是最漂亮的還是最好的代碼,但它有一個我一直在尋找的功能的問題。感謝大家對這個問題的所有幫助!

String[] arrayOfString = { "Beard Vape Co.;beard_vape_co", "two;zwei", "three;drei" }; 

    List<String> sKeyArray = new ArrayList<>(); 
    List<String> sValueArray = new ArrayList<>(); 
    for(String s: arrayOfString) { 
     String[] array = s.split(";"); 
     String sKey = "", sValue = ""; 
     if (array.length > 1) { 
      sKey = array[0]; 
      sValue = array[1]; 
      sKeyArray.add(sKey); 
      sValueArray.add(sValue); 
     } 

    } 
    for(int i = 0; i < sKeyArray.size(); i++){ 
     if(sKeyArray.get(i).toString().contains(liquidCompany.trim().toString())){ 
      testingText.append(sKeyArray.get(i).toString()); 
      testingText.append(sValueArray.get(i).toString()); 
      int resID = getResources().getIdentifier(sValueArray.get(i).toString() , "drawable", getPackageName()); 
      imageView.setImageResource(resID); 
     } 
    } 
+0

的幫助所以基本上它只是錯誤的代碼,你需要幫助調試。下次嘗試自己隔離問題。問問自己什麼是錯的,然後測試一下。在這裏,它可能是'for'循環,'if'測試或者傳遞給'setImageResource'的resID。在***之後,您最好使用StackOverflow ***測試了代碼的每個方面,並確定哪些***行不按照您期望的方式工作。那麼你會有一個*特定的*問題,其答案*會對其他人有用*。在這裏,你所擁有的是「我的代碼壞了,我不知道爲什麼」。解決它只會幫助你。 – ToolmakerSteve

0

如果你已經有了一個ImageView的設置你的佈局,您可以使用View.setVisibility顯示或隱藏的ImageView:

ImageView image = findViewById(R.id.image); 
if (key.equals("String"))  
    image.setVisibility(View.VISIBLE); 
else 
    image.setVisibility(View.GONE); 

如果您想在更新圖像後更改圖像,可以使用

image.setImageResource(R.drawable.whatever); 
0

這是c Lassic案件的XY問題。你真正的問題是從字符串獲取資源ID。這已經在SO之前很多時候被回答了。 link

試試這個:

final String splitedDouble[] = companyString.split(",,"); 

String[] arrayOfString = { "Beard Vape Co;beard_vape_co", "two;zwei", "three;drei" }; 


Hashtable<String, String> hashTable = new Hashtable<String, String>(); 
for(String s: arrayOfString){ 
    String[] array = s.split(";"); 
    String sKey ="", sValue=""; 
    if(array.length > 1){ 
     sKey = array[0]; sValue = array[1]; 
     hashTable.put(sKey, sValue); 
     imageView.setImageResource(getResId("R.drawable." + sValue.toString(), Drawable.class)); 
     imageView.setVisiblity(View.GONE); 
     if(sKey.toString().equals(liquidCompany)){ 
      imageView.setVisiblity(View.VISIBLE); 
     } 
    } 

public static int getResId(String resName, Class<?> c) { 
    try { 
     Field idField = c.getDeclaredField(resName); 
     return idField.getInt(idField); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return -1; 
    } 
} 
+0

有了這個,當我把它放到我的android工作室時,有很多東西我無法解決或導入 –

+0

是真的。這不是我測試過的。另外我還沒有添加任何進口。所以我可以想象它有一些未解決的符號。但我希望它能給你足夠的信息來指出問題並達成解決方案。 –

0

你的形象並未出現的原因是因爲這裏

imageView.setImageResource(Integer.parseInt("R.drawable." + sValue.toString())); 

你沒有設置你的圖像的正確的資源ID。 Integer.parseInt("R.drawable." + sValue.toString())返回無效標識符。

你可以按照下面的例子來做。

Class<?> drawableClass = R.drawable.class; 
    try { 
     Field icLauncherField = drawableClass.getDeclaredField("ic_launcher"); 
     imageView.setImageResource(Integer.valueOf(icLauncherField.getInt(null))); 
    } catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

這仍然會進入循環? –

+0

是的,你可以在循環內進行。 – alijandro

+0

好聽起來不錯我會試試它真的很快。謝謝大家對這個 –