2014-10-22 74 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);