2014-10-22 73 views
-3

我有5個圖像,我正在更新基於值的問題,但問題是更新所有這些我有eacg圖像更新冗餘代碼期望特定的imageView對象。這裏是例子,我有這5種方法來更新每個imageview,我認爲這不是最佳解決方案。更新多個imageview的具體價值

public void imageThird(int value){ 
    third.setVisibility(View.VISIBLE); 
    if(value >= 1000 && value <= 800) { 
     third.setImageResource(R.drawable.sa); 
    } 
    else if(value >= 800 && value <= 500) { 
     third.setImageResource(R.drawable.sb); 
    } 
    else if(value >= 500 && value <= 300) { 
     third.setImageResource(R.drawable.sc); 
    } 
    else if(value >= 300 && value <= 150) { 
     third.setImageResource(R.drawable.sd); 
    } 
    else if(value >= 150 && value <= 50) { 
     third.setImageResource(R.drawable.se); 
    } 
    else { 
     third.setImageResource(R.drawable.sa); 
    } 
} 

所以我有5像這樣的方法,這是不好的我猜,唯一的區別是每個圖像的imageview對象。這可能是一個愚蠢的問題,我並不清楚Andorid中的圖像是如何工作的。

+1

怎麼可能是一個值可以大於800,但低於500 ???你已經定義了所有錯誤的條件...... – 2014-10-22 09:50:39

回答

0

這個問題不僅涉及到Java或Android ...

public void updateImage(yourview, int value){ 

yourview.setVisibility(View.VISIBLE); 
    if(value >= 1000 && value <= 800) { 
     yourview.setImageResource(R.drawable.sa); 
    } 
    else if(value >= 800 && value <= 500) { 
     yourview.setImageResource(R.drawable.sb); 
    } 
    else if(value >= 500 && value <= 300) { 
     yourview.setImageResource(R.drawable.sc); 
    } 
    else if(value >= 300 && value <= 150) { 
     yourview.setImageResource(R.drawable.sd); 
    } 
    else if(value >= 150 && value <= 50) { 
     yourview.setImageResource(R.drawable.se); 
    } 
    else { 
     yourview.setImageResource(R.drawable.sa); 
    } 
} 
+0

此外,所有的條件總是錯誤的。但我認爲他的問題是他想爲每個視圖繪製不同的drawable。使用一些int列表可以做到這一點。 – 2014-10-22 09:46:43

0

做最簡單的事情就是把ImageView要更新的參數之一:

public void updateImage(ImageView iv, int value) { 
    iv.setVisibility(View.VISIBLE); 
    if(value >= 1000 && value <= 800) { 
     // this will never get called 
     // number is never greater than 1000 AND smaller than 800 
     iv.setImageResource(R.drawable.sa); 
    } 
    else if(value >= 800 && value <= 500) { 
     // this will never get called 
     // number is never greater than 800 AND smaller than 500 
     iv.setImageResource(R.drawable.sb); 
    } 
    else if(value >= 500 && value <= 300) { 
     // this will never get called 
     // number is never greater than 500 AND smaller than 300 
     iv.setImageResource(R.drawable.sc); 
    } 
    else if(value >= 300 && value <= 150) { 
     // this will never get called 
     // number is never greater than 300 AND smaller than 150 
     iv.setImageResource(R.drawable.sd); 
    } 
    else if(value >= 150 && value <= 50) { 
     // this will never get called 
     // number is never greater than 150 AND smaller than 50 
     iv.setImageResource(R.drawable.se); 
    } 
    else { 
     iv.setImageResource(R.drawable.sa); 
    } 
} 

由於你看到上面的代碼有一些邏輯缺陷。你可能需要看上去更像是這樣的:

public void updateImage(ImageView iv, int value) { 
    iv.setVisibility(View.VISIBLE); 
    // i assumed that 1000 is a maximum and 0 is minimum 
    if (value >= 800) { 
     // from 800 to 1000 make this super green? 
     iv.setImageResource(R.drawable.sa); 
    } else if (value >= 500) { 
     // from 500 to 800 make this normal green? 
     iv.setImageResource(R.drawable.sb); 
    } else if (value >= 300) { 
     // from 300 to 500 make this yellow? 
     iv.setImageResource(R.drawable.sc); 
    } else if (value >= 150) { 
     // from 150 to 300 make this orange? 
     iv.setImageResource(R.drawable.sd); 
    } else { 
     // from 0 to 150 make this red? 
     iv.setImageResource(R.drawable.se); 
    } 
} 

然後你把這個代碼:

updateImage(third, value);