6

安卓 2.3.3

我有一个 N 行 N 列的表。对于每一行,我应该动态添加 4 个按钮,然后根据单击的按钮执行操作。我知道我们可以使用整数值设置按钮 ID button.setID(),但我想知道我们是否可以将 ID 设置为我们在 XML 文件中设置的字符串值,例如btnXYZ1btnXYZ2

4

6 回答 6

14

您可以为此目的使用标签。例如

btn.setTag("btXYZ");
于 2013-02-11T08:31:48.103 回答
4
for (int i=0;i<nob;i++) {
     Button btn = new Button(this);
     btn.setId(i+1);
     btn.setText("Button"+(i+1));
     btn.setOnClickListener(btnclick); <<<<<<<set click
     btn.setLayoutParams(lprams);
     dynamicview.addView(btn);
}

并将此侦听器添加到任何方法之外和类内部

OnClickListener btnclick = new OnClickListener() {

    @Override
    public void onClick(View view) {

        switch(view.getId()) {
            case 1:
                //first button click
                break;
                //Second button click
            case 2:
                break;
            case 3:
                //third button click
                break;
            case 4:
                //fourth button click
                break;
             .
             .
             .
            default:
                break;
        }
    }
};
于 2013-02-11T08:33:56.237 回答
2

您在 XML 文件中使用的字符串对应于 R.java 中的 int,因此实际上是 int。setId() 方法只接受一个 int 值作为参数。您可以在常量文件中定义您的 ID,例如:

public class Ids {
    public static final int ID_ONE = 1;
}

然后将其用作:

button.setId(Ids.ID_ONE);
于 2013-02-11T08:33:58.233 回答
0

不,您不能将其设置为String,id 是int值,即使您从中设置它XML只是int值的资源名称

于 2013-02-11T08:33:37.557 回答
0

不,您不能将其设置为 String,id 是 int 值,即使您从 XML 设置它也只是 int 值的资源名称

于 2013-02-11T08:43:32.730 回答
0

如果您仍然有对视图的引用,则可以简单地将它们全部保存到 HashMap 中,例如使用 HashMap。

为了避免任何拼写错误,另一种选择是使用枚举作为 hashMap 的键,例如:HashMap。

于 2013-02-11T08:45:18.383 回答