从一个clicklistener引用特定按钮

时间:2014-02-25 14:29:02

标签: android arrays android-layout android-button android-tablelayout

我在解决如何使用从阵列中添加到TableLayout的按钮列表中的1个唯一按钮时遇到问题。

下面是我用来完成这项工作的代码,我现在看到的行为(自然地)按钮都响应了监听器。我希望单击的按钮(以及单独的按钮)以某种方式运行。

我尝试过对数组中按钮声明的setTag(i)组合,然后在侦听器内部我使用getTag()并使用该值作为数组的索引,但无济于事。

我还测试了从数组中为索引0处的按钮显式指定侦听器,这样做的确是仅将侦听器添加到该指定按钮,但是当单击该按钮时,其余按钮也会响应。 / p>

理想情况下,下面的代码是我想要实现的,只要点击它,按钮的宽度就会增加到大约300px。在我做完这件事的时候,我比其他项目更难以理解......

任何帮助都将不胜感激,谢谢。

private void initializeTableRows(TableLayout stringsTable) {
    // TODO Auto-generated method stub
    String[] strings = { "d", "g", "d", "g", "b", "d" };
    addRowsToTable(strings, stringsTable);
}

private void addRowsToTable(String[] strings, TableLayout stringsTable) {
    TableRow tableRows[] = new TableRow[strings.length];
    Button[] stringNames = new Button[strings.length];
    final Button[] tuneButtons = new Button[strings.length];

    for (int i = 0; i < strings.length; i++) {
        stringNames[i] = new Button(this);
        stringNames[i].setBackgroundResource(R.drawable.red_frame);
        stringNames[i].setText(strings[i].toUpperCase());
        stringNames[i].setTextColor(Color.WHITE);

        tuneButtons[i] = new Button(this);
        tuneButtons[i].setBackgroundResource(R.drawable.red_frame);
        tuneButtons[i].setTextColor(Color.WHITE);
        tuneButtons[i].setText("Tune");

        tuneButtons[i].setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Button clickedButton = (Button) v;
                clickedButton.setWidth(300);
            }
        });

            tableRows[i] = new TableRow(this);
        tableRows[i].addView(stringNames[i]);
        tableRows[i].addView(tuneButtons[i]);


        tableRows[i].setPadding(0, 0, 0, 40);

        stringsTable.addView(tableRows[i]);
    }
}

1 个答案:

答案 0 :(得分:0)

它一直在使用,我只是错误地在按钮上使用了setWidth()。我错误地说,因为现在我刚用setText()进行了测试,文本仅针对有问题的按钮进行了更改,而不是其他任何内容。

我在文本发生变化时所意识到的是,tableLayout中的所有其他按钮也随着所讨论的按钮的扩展而扩展(以适应所设置的新文本的大小)。这是TableLayout以这种不受欢迎的方式运行的错误。