在java活动中循环访问Android表格布局

时间:2014-05-03 04:04:36

标签: java android onclick android-tablelayout

所以我在每个行(列)中都有一个包含 n 行和 m 项目的表格布局。每个都是一个ImageButton,我想为它们中的每一个添加一个onClick(View v)方法。无论如何要在表格中循环并执行此操作,还是必须对其进行硬编码 n * m 次?

1 个答案:

答案 0 :(得分:3)

是的,你必须循环遍历数组。您需要实例化按钮并设置监听器。您必须为每个按钮分配一个监听器,但是您可以通过单个方法响应onClick(),而不是为每个按钮制作内联方法,这会很快变得混乱。

public class ButtonExampleActivity implements View.OnClickListener {

    private int[][] buttonViewIds = new int[][] {
            { R.id.button00, R.id.button01, R.id.button02 },
            { R.id.button10, R.id.button11, R.id.button12 },
            { R.id.button20...
    };
    // assuming each row is the same length you can do this
    private Button[][] buttonArray = new Button[buttonViewIds.length][buttonViewIds[0].length];

    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.layout);

        for (int i=0; i<buttonViewIds.length; i++) {
            for (int j=0; j<buttonViewIds[0].length; j++) {
                buttonArray[i][j] = (Button) findViewById(buttonViewIds[i][j]);
                buttonArray[i][j].setOnClickListener(this);
            }
        }
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.button01:
            case R.id.button02:
            case R.id.button03:
                // do something
                break;
            case R.id.button10:
                // do something else
                break;
            ...
            default:
                Log.e("Not a handled Button: " 
                    + getResources().getResourceName(v.getId());
        }
    }
}