根据情况设置ImageView

时间:2011-11-30 19:03:07

标签: java android android-imageview

我一直在寻找一段时间,无法找到解决我问题的方法。我正在尝试根据用户登录设置imageView。主要问题是如何将R.drawable.stock重命名为R.drawable.user1,其中imageView的名称随用户名称而变化。我尝试将其设置为String temp="R.drawable."+userNameStore;之类的字符串,但没有运气。

这就是我在做的事情:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile);

    SharedPreferences app_preferences =
        PreferenceManager.getDefaultSharedPreferences(this);
    String userNameStore = 
        app_preferences.getString("userNameStore", null);

    String temp="R.drawable."+userNameStore;

    TextView textName=(TextView) findViewById(R.id.username);
    textName.setText("Username: "+ userNameStore);
    ImageView image = (ImageView) findViewById(R.id.imageView1);
            image.setImageResource(temp);
}

3 个答案:

答案 0 :(得分:0)

您可以使用getIdentier,例如:

getResources().getIdentifier("star_off", "string", getPackageName());

查看文档here

在你的情况下它应该是这样的:

int resID = getResources().getIdentifier(temp, "drawable", getPackageName());
...
image.setImageResource(resID);

答案 1 :(得分:0)

您可以像这样构建字符串标识符......

int id = getResources()。getIdentifier(“name_of_resource”,“id”,getPackageName());

涵盖here

答案 2 :(得分:0)

我在我的实用程序类中使用了2个方法:

public static int getImageId(Context context, String imageName) {
    return context.getResources().getIdentifier("drawable/" + imageName, null, context.getPackageName());
}

public static int getRawResourceId(Context context, String rawName) {
    return context.getResources().getIdentifier("raw/" + rawName, null, context.getPackageName());
}

因此,如果您的可绘制文件夹中有一个名为user1的图像资源,您可以像这样使用其ID:

imageView.setImageResource(getImageId(this, "user1"));