通过在字符串android中使用名称来引用对象

时间:2013-07-17 16:36:49

标签: java android string

我希望能够通过使用存储在变量中的名称来在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");

3 个答案:

答案 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(中使用的字符串来选择按钮。