-4

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

3 回答 3

2

为什么不使用地图?

Map<String,Button> buttons = new HashMap<String,Button>();
buttons.put("buttonA", new Button());
buttons.get("buttonA");  // gets the button...
于 2013-07-17T16:42:30.300 回答
0

最聪明的方法是使用键值数据结构来查找按钮。

我总是使用 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
于 2013-07-17T16:43:19.553 回答
0

使用HashMap<String, Button>. 这提供了查找O(1)并允许将字符串作为键。

首先,创建一个哈希图:

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(选择按钮的字符串。

于 2013-07-17T16:43:24.977 回答