0

ImageViewsXMLファイルにたくさんあります

ID は次のとおりです。

ivIcon0
ivIcon1
ivIcon2
ivIcon3

int k;値が 1の場合は表示のみivIcon1を行い、int k値が 0 の場合は「ivIcon0」を表示します

私は次のことを試しました:

int iconResource = R.id.ivIcon(k);

エラーが発生します。私はそれが単純だと確信していますが、それを理解できないようです。backgroundに一致するIDのiconResourceを設定したいR.drawable.iconpressed

次の行を持つウィジェットがあります。

RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widgetlayout);

そして、次の行を使用して画像ソースを設定できます。

views.setImageViewResource("THE ID FROM THE INDEX", "THE DRAWABLE");

しかし、上記の 2 行は、Activity

4

2 に答える 2

1

int 配列を作成します。

int[] resources = { R.id.ivIcon0, R.id.ivIcon1, R.id.ivIcon2, R.id.ivIcon3 };

そして、を使用してIDにアクセスしますint iconResource = resources[k];

または、文字列から ID を取得します (アクティビティでこれを行う場合は、「context」を「this」に置き換えます)

int iconResource = context.getResources().getIdentifier("ivIcon" + k, "id", context.getPackageName());

そして、ビューを取得するには:ImageView view = (ImageView) findViewById(iconResource)

個人的には、可能な ID の数が多すぎない限り、int-array アプローチを使用することを好みます。get-id-from-String アプローチを使用すると、id が見つからない場合は 0 になりますが、int-array の値が見つからない場合はコンパイラ エラーが発生します。

于 2013-09-30T00:10:25.450 に答える
0

他の人が将来それを必要とする場合に備えて機能する私のソリューション:

if(Arrays.asList(myarraylist).contains(df.format(Calendar.getInstance(Locale.US).getTime()))) {
        int index = Arrays.asList(suspendedDates).indexOf(df.format(Calendar.getInstance(Locale.US).getTime()));

        int k = MainActivity.this.getResources().getIdentifier("ivIcon" + index, "id", MainActivity.this.getPackageName());

        ImageView view = (ImageView) findViewById(k);

        view.setImageResource(R.drawable.caliconpressed);
    }
于 2013-09-30T12:04:16.943 に答える