我希望能够通过使用存储在变量中的名称来在java中使用对象。例如:
String[] str={"name1","name2"};
Button name1 = (Button) findViewById(R.id.but1);
Button name2 = (Button) findViewById(R.id.but2);
//what i want to do is : instead of
name1.setText("TEXT");
//to use something like
Button.str[0].setText("TEXT");
答案 0 :(得分:2)
为什么不使用地图?
Map<String,Button> buttons = new HashMap<String,Button>();
buttons.put("buttonA", new Button());
buttons.get("buttonA"); // gets the button...
答案 1 :(得分:0)
最明智的方法是使用键值数据结构来查看Button。
我总是使用HashMap,因为它是O(1)查找时间。
下面是一个简单的例子:
HashMap<String, Button> map = new HashMap<String, Button>();
Button name1 = (Button) findViewById(R.id.but1);
map.put("name1", name1);
Button name2 = (Button) findViewById(R.id.but2);
map.put("name2", name2);
map.get("name1"); //Will return button name1
答案 2 :(得分:0)
使用HashMap<String, Button>
。这提供了O(1)
中的查找,并允许将字符串作为键。
首先,创建一个hashmap:
HashMap<String, Button> buttons=new HashMap<>(); //The <> works in JDK 1.7. Otherwise use new HashMap<String, Button>();
然后添加按钮:
buttons.put("name1", findViewById(R.id.but1));
buttons.put("name2", findViewById(R.id.but2));
并通过以下方式获取:
Button btn=buttons.get("name2");
您可以调整get(
中使用的字符串来选择按钮。