如何从字符串数组资源中检索图像值并使用该值来设置背景

时间:2015-11-12 21:00:00

标签: android android-intent android-activity

我在android中编写了一个程序。在其中我将所有图像添加到drawable文件夹中,例如dress_1.png,dress_2。但是图像名称dress_1被添加到字符串数组资源中。现在我不知道如何从这个字符串数组资源中检索图像并将其设置为imageview中的背景。我提到了以下代码。请帮我完成任务。我真的会嘲笑你。提前谢谢你。 简介:如何从数组字符串中检索字符串值到java以及如何使用android中可绘制文件夹中检索到的字符串图像 xml文件(小代码)

              <ImageView
                    android:id="@+id/T1C4R1"
                    android:layout_width="0dp"
                    android:layout_height="35dp"
                    android:layout_weight=".45"
                    android:background="@drawable/rszjumper"
                    android:contentDescription="@string/desc" />

SecondActivity.java

        for (int c = 0; c < conditions.length; c++) {
            weatherCondition(conditions[c]);
        }
        private void weatherCondition(int c) {

        switch(c){
        case 5:
            String dress_array[] = getResources().getStringArray(R.array.five);
            weatherDress(dress_array);
        }

    }

    private void weatherDress(String[] dress_array) {
    for(int d =0; d < dress_array.length; d++ ){
        String img = "drawable/" + dress_array[d];

        T1C4R1.setBackground(img);
//img.setImageResource(getResources().getIdentifier(image_string[1] , "drawable", getPackageName()));
        }

    }

string.xml

    <!-- condtion 5 -->
    <string-array name="five" >
        <item name="dress_2">dress_2</item>
        <item name="dress_8">dress_8</item>
        <item name="dress_6">dress_6</item>
    </string-array>

1 个答案:

答案 0 :(得分:1)

通常,您会根据其资源ID(例如R.drawable.dress_1)查找drawable。如果您是根据字符串查找它们,则需要首先根据名称查找资源ID。

public Drawable getDrawableByName(Context context, String name)
    Resources resources = context.getResources();
    final int resourceId = resources.getIdentifier(name, "drawable", 
        context.getPackageName());
    return resources.getDrawable(resourceId);
}
T1C4R1.setImageDrawable(getDrawableByName(getContext(), "dress_2"));

或者,您只需返回资源ID并使用setImageResource根据其ID分配drawable。

您还应该注意,您当前的结构只会显示数组中的最后一个图像,因为您在循环中每次传递都会覆盖可绘制图像。