2012-05-11 4 views
0

スイッチケースの機能に従って画像を表示する必要があります。私は本当にそれらをxmlファイルに入れる必要がありますか?関数にそれらを描画することはできますか?また、この関数をアクティビティに入れる必要がありますか?スイッチケース機能で正しい画像を表示しますか?(Android)

私はあなたに私のスイッチケースの機能を提供することができます

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; 

質問があまりにも簡単と思われる場合はごめんなさい:(

答えて

3

私はImageViewの1つを使用し、あなたの条件に基づいて画像を設定します。私はあなたの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

+0

に各画像の異なる解像度バージョンは、これは、いくつかのステート・マシンなどのUIスレッド上で必ずそれをすべて実行してくださいに基づいて画像を選択するための標準と広く用いられている方法である。 – ScouseChris

+0

これはもっと明確になりました。status_imageという質問は1つしかありません(おそらくばかばかしいようです)年齢? –

+0

@DianaCあなたのXMLでは、参照できるように、 'id =" + @ id/status_image "またはそれに類するものを使ってImageViewに名前を付ける必要があります。これはXMLで使用したのと同じ名前です。 ImageViewをXMLで作成しなかった場合、その行の代わりに 'ImageView image = new ImageView(this);'のようなものがあります。 –

0

あなたをswitchは、いつもcase 1:に入るので意味がありません。switch/caseのものを削除し、で行ってくださいのみ。

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はそれほど最後の最も重要なケースを注文する複数の上書きされます場合。

関連する問題