0

所以我需要根据我的 switch case 功能显示其中一张图像,我真的不知道最好的方法是什么。我真的需要将它们放在一个 xml 文件中,我可以在函数中绘制它们吗?另外,我需要把这个功能放在一个活动中吗?

我可以为您提供我的开关盒功能:

public void BloodStatistics(){
        String state;
        int cases=1;
        switch(cases){
        case 1: if(sys<90 && dys<60)
            state="Hypotension";
        break;
        case 2: if(sys>90 && sys<119 && dys>60 && dys<79)
            state="Desriable";
        break;
        case 3: if(sys>120 && sys<139 && dys>80 && dys<89)
            state="Prehypertension";
        break;
        case 4: if(sys>140 && sys<159 && dys>90 && dys<99)
            state="Hypertension Stage 1";
        break;
        case 5: if(sys>160 && sys<179 && dys>100 && dys<109)
            state="Hypertension Stage 2";
        break;
        case 6: if(sys>=180 && dys>=110)
            state="Hypertension Crisis";
        break;
        case 7: if(sys<90 && dys>=60)
            state="Hypotension";
        break;
        default: state="invalid mesurements";
        break;

        }
    }

这些是我的图像:

ImageView Hypotension, Desriable, Prehypertension, Hypertension_Stage_1, Hypertension_Stage_2, Hypertension_Crisis;

如果这个问题看起来太简单了,我很抱歉:(

4

2 回答 2

3

我会使用一个ImageView,然后根据您的条件将图像设置到其中。我也对您的 switch 语句感到有些困惑。据我了解,您只是在检查血压范围,所以我的代码如下:

ImageView image = findViewById(R.id.status_image);
int res;

if(sys<90 && dys<60) {
    res = r.drawable.Hypotension;
}
else if(sys>90 && sys<119 && dys>60 && dys<79) {
    res = r.drawable.Desriable;
}
else if(sys>120 && sys<139 && dys>80 && dys<89) {
    res = r.drawable.Prehypertension;
}
else if(sys>140 && sys<159 && dys>90 && dys<99) {
    res = r.drawable.Hypertension_Stage_1;
}
else if(sys>160 && sys<179 && dys>100 && dys<109) {
    res = r.drawable.Hypertension_Stage_2;
}
else if(sys>=180 && dys>=110) {
    res = r.drawable.Hypertension_Crisis;
}
else if(sys<90 && dys>=60) {
    res = r.drawable.Hypotension;
}
else {
    res = 0;
}

if(res != 0) {
    image.setImageDrawable(res);
}

确保将具有您指定名称的图像放入文件夹中(或者,更好的是,drawable将每个图像的不同分辨率版本放入drawable-ldpidrawable-mdpidrawable-hdpidrawable-xhdpi

于 2012-05-11T13:10:36.843 回答
0

switch没有意义,因为你总是会进入case 1:,删除switch/case东西并if ... else只使用它。

    String state="invalid mesurements"; // or use the R.id. here and make state int
    if(sys<90 && dys<60)
        state="Hypotension";
    if(sys>90 && sys<119 && dys>60 && dys<79)
        state="Desriable";
    if(sys>120 && sys<139 && dys>80 && dys<89)
        state="Prehypertension";
    if(sys>140 && sys<159 && dys>90 && dys<99)
        state="Hypertension Stage 1";
    if(sys>160 && sys<179 && dys>100 && dys<109)
        state="Hypertension Stage 2";
    if(sys>=180 && dys>=110)
        state="Hypertension Crisis";
    if(sys<90 && dys>=60)
        state="Hypotension";

小心:如果多个if匹配条件state将被覆盖,因此将最重要的情况排在最后。

于 2012-05-11T13:09:55.040 回答