OnClickListener и Table Layout - PullRequest
       27

OnClickListener и Table Layout

2 голосов
/ 07 июля 2011

У меня есть Activity с двумя макетами, оба реализованы в R.layout.main.Первый - это относительный макет с основным экраном приложения, а второй - это макет таблицы, содержащий своего рода экран настроек.Обычно первый виден, а второй пропал.Нажав кнопку, я делаю Относительную компоновку, и Табличную Компоновку видимой.И здесь начинается моя проблема, я хотел установить OnClickListener для этого Table Layout (который на самом деле является массивом кнопок).Я пробовал что-то вроде:

final TableLayout table = (TableLayout)findViewById(R.id.tab);
    table.setOnClickListener(new OnClickListener(){
        public void onClick(View arg){
             Button clickedButton = (Button)arg;
             String t = (String) clickedButton.getTag();

             Toast toast = Toast.makeText(getApplicationContext(),t,Toast.LENGTH_SHORT);
             toast.show();

        }
    });

Очевидно, это не работает.Я довольно новичок в программировании Android, и я искал подходящее решение в течение всего дня без каких-либо результатов.

1 Ответ

1 голос
/ 07 июля 2011

Это не может работать, потому что вы сначала пытаетесь привести TableLayout к кнопке ... если ваш TableLayout содержит только кнопки, вы можете сделать что-то вроде:

TableLayout yourRootLayout = findView....
int count = yourRootLayout.getChildCount();
for(int i = 0; i < count; i++){
    View v = yourRootLayout.getChildAt(i);
    if(v instanceof TableRow){
        TableRow row = (TableRow)v;
        int rowCount = row.getChildCount();
        for (int r = 0; r < rowCount; r++){
            View v2 = row.getChildAt(r);
            if (v2 instanceof Button){
                Button b = (Button)v2;
                b.setOnClickListener(this);
            }
        }
    }
}

и позволить вашей деятельности реализоватьOnClickListener.Просто скопируйте ваш существующий onClick в само действие ...

...