【问题标题】:Dynamically set Source of the ImageView动态设置 ImageView 的 Source
【发布时间】:2011-04-07 04:53:53
【问题描述】:

我正在尝试根据国家名称在 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);

【问题讨论】:

  • imageFlagRight.setImageResource(getFlagResource("India"));在这行代码中,你动态传递了印度
  • 不是实时的,就像imageFlagRight.setImageResource(getFlagResource(anObjectFromMatchList.getTeamName()));
  • 您不需要 getFlagResource() 方法,您只需对所有 TeamImages 通用以下行 imageFlagRight.setImageResource(R.drawable.flag_+TeamName);其中 TeamName 是字符串。传递团队名称并获取结果
  • @Ayudh 你不能像那样简单地追加

标签: android android-layout android-imageview


【解决方案1】:
String name="flag_" + "india";
public int getFlagResource(Context context, String name) {
   int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere");
   return resId;
}

试试这个。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      来自@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;
          }
      

      【讨论】:

        【解决方案4】:
        <yourimageview>.setImageViewResource(getFlagResource("india"));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-28
          相关资源
          最近更新 更多