我有一个来自网络的字符串。
该字符串匹配变量。 该变量的类型为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)
}
我想做的是什么,以便我可以研究它。
答案 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
}
....
}