如何将String转换为另一个要在Function中使用的Type

时间:2015-01-15 07:20:07

标签: java android android-layout types

我有一个来自网络的字符串。

该字符串匹配变量。 该变量的类型为FrameLayout。

我有一个用FrameLayout调用的函数。

如何让函数接受传入的字符串

   @InjectView (R.id.printer45)
   FrameLayout printer_45;       

   public static final List<String> RED = Arrays.asList("printer_45")

   redLabelIcon(FrameLayout fL){

    ***create red icon***

   }

   String printer = data.getString("Printer")
   String status = data.getString("Status")

   **turn printer into frameLayout, somehow**

       if (RED.contains(status)){
           redLabelIcon(printer)
         }

我想做的是什么,以便我可以研究它。

3 个答案:

答案 0 :(得分:1)

您要实现的目标称为映射

Map<String, FrameLayout> mapping = new HashMap<>();
mapping.put("printer_45", printer_45);

以同样的方式,您可以根据需要在String类型的键下放置任意数量的布局。稍后您将检索布局:

String printer = data.getString("Printer");
FrameLayout layout = mapping.get(printer);

答案 1 :(得分:0)

您正在做的事情被称为&#34;映射&#34; - 通常你会看到&#34; key&#34; /&#34;价值&#34;例如,在Hashtable中配对。或者您可以使用Map或使用case声明或&#34;否则/ if&#34;。

在您的情况下,List对象没有&#34;键&#34;只有一个&#34;值&#34;所以它不起作用。您需要能够关联&#34;键&#34;喜欢&#34; RED&#34;使用类似&#34; printer_45&#34;。

的值

如果您使用Hashtable,请不要使用&#34; RED&#34;作为对象的名称,使用类似&#34;打印机&#34;然后给&#34; printer_45&#34;作为&#34;值&#34;和&#34; RED&#34;作为关键。您也可以使用Map或两个Arrays(一个&#34;键&#34;一个&#34;值&#34;)或许多其他方式执行此操作。

答案 2 :(得分:0)

您可以使用FactoryMethod模式获取

    public static FrameLayout getFrameLayout(String layoutName){
     if("layout1".equals(layoutName)){
      return FrameLayout1;
     }   else if (...){
     return FrameLayout2
     }
     ....
    }