2012-04-30 6 views
1

私は以下の設定をしています。私のXMLでは、私は画像ビューの束を持っています。私は、好みと曜日に設定された数字に応じて、1つだけを表示しようとしています。これは本当に簡単にする必要がありますが、私は変数をfindViewByIDに渡す正しい方法を見つけることができません。以下はコードスニペットです:findViewByIDに変数を渡す

String groupName = "R.id."+prefs.getString("groupListKey", "<unset>")+"_"+(Calendar.getInstance().get(Calendar.DAY_OF_WEEK)); 

ImageView image = (ImageView) findViewById(groupName); 

答えて

2

findViewById()は、リソース識別子を表す整数を渡すことを想定しています。あなたはそれを文字列を渡すしようとしている

あなたの最善の策は、一週間のあなたの一日を評価し、あなたが

int resourceId = 0; 
switch (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)) { 
    case Calendar.SUNDAY: 
     resourceId = R.id.sundayView; 
     break; 

    case Calendar.MONDAY: 
     resourceId = R.id.mondayView; 
     break; 

    ...etc 
} 

ImageView image = (ImageView) findViewById(resourceId); 
1

findViewByIdあることの道をやってするのではなく、あなたに適切なIDを返す条件文を持っているだろう引数としてintを受け取ります。これは、R.idクラスで生成されたものの1つです。

あなたのIDの配列持つことができます。

int[] imagesIds = new int[] { R.id.image1, ... R.id.image7 }; 

をそしてあなたの条件に基づいてインデックスを決定:

int imageIndex = ... 
ImageView image = (ImageView) findViewById(imagesIds[imageIndex]);