动态设置ImageView的Source

发布于 2024-10-31 11:13:53 字数 1174 浏览 0 评论 0原文

我正在尝试根据国家/地区名称在 ImageView 中设置国家/地区标志。

我遵循这样的约定:国旗图像始终存储在 drawable/flag_country_name 中,

例如; drawable/flag_india、drawable/flag_south_africa

到目前为止我编写的代码是

imageFlagRight.setImageResource(getFlagResource("India"));

private int getFlagResource(String teamName) {
        if(teamName.equals("India")){
            return R.drawable.flag_india;
        }
        if(teamName.equals("Srilanka")){
            return R.drawable.flag_srilanka;
        }
        if(teamName.equals("New Zealand")){
            return R.drawable.flag_new_zealand;
        }
        if(teamName.equals("Pakistan")){
            return R.drawable.flag_pakistan;
        }
        if(teamName.equals("Srilanka")){
            return R.drawable.flag_srilanka;
        }
        if(teamName.equals("South Africa")){
            return R.drawable.flag_south_africa;
        }
        if(teamName.equals("Austalia")){
            return R.drawable.flag_australia;
        }
        return R.drawable.flag_default;
    }

上面的代码工作正常。

现在我想添加更多的县和旗帜。有什么办法可以减少代码行数吗?喜欢 return R.drawable.flag+underscorise(teamName);

I'm trying to set country flags in a ImageView according to country name.

I follows the convention that country flag image is always stored at drawable/flag_country_name

for eg; drawable/flag_india, drawable/flag_south_africa

Code I written so far is

imageFlagRight.setImageResource(getFlagResource("India"));

private int getFlagResource(String teamName) {
        if(teamName.equals("India")){
            return R.drawable.flag_india;
        }
        if(teamName.equals("Srilanka")){
            return R.drawable.flag_srilanka;
        }
        if(teamName.equals("New Zealand")){
            return R.drawable.flag_new_zealand;
        }
        if(teamName.equals("Pakistan")){
            return R.drawable.flag_pakistan;
        }
        if(teamName.equals("Srilanka")){
            return R.drawable.flag_srilanka;
        }
        if(teamName.equals("South Africa")){
            return R.drawable.flag_south_africa;
        }
        if(teamName.equals("Austalia")){
            return R.drawable.flag_australia;
        }
        return R.drawable.flag_default;
    }

The above code works correctly.

Now i want to add more counties and flags. Is there any way to reduce the code lines? like
return R.drawable.flag+underscorise(teamName);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

雨落□心尘 2024-11-07 11:13:53
String name="flag_" + "india";
public int getFlagResource(Context context, String name) {
   int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere");
   return resId;
}

试试这个。

String name="flag_" + "india";
public int getFlagResource(Context context, String name) {
   int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere");
   return resId;
}

Try this one.

面如桃花 2024-11-07 11:13:53

你必须存储国家名称和 R.id 值...

当你想要获取这些值并显示它时

U have to Store the country name and R.id Values....

When u want get those Values And display it

书间行客 2024-11-07 11:13:53

来自 @Saurabh Pareek 的输入

private int getFlagResource(String teamName) {
         String flagString = "flag_"+teamName.replace(" ", "_").toLowerCase();
         int resId = getContext().getResources().getIdentifier(flagString, "drawable", "com.mypackage.namehere");
         if(resId != 0){
             return resId;
         }
         return R.drawable.flag_default;
    }

With the input from @Saurabh Pareek

private int getFlagResource(String teamName) {
         String flagString = "flag_"+teamName.replace(" ", "_").toLowerCase();
         int resId = getContext().getResources().getIdentifier(flagString, "drawable", "com.mypackage.namehere");
         if(resId != 0){
             return resId;
         }
         return R.drawable.flag_default;
    }
梦魇绽荼蘼 2024-11-07 11:13:53
<yourimageview>.setImageViewResource(getFlagResource("india"));
<yourimageview>.setImageViewResource(getFlagResource("india"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文