Использование одного и того же слушателя onClick с несколькими представлениями - PullRequest
2 голосов
/ 07 марта 2011

Я использую один и тот же прослушиватель onClick для нескольких элементов.

Когда я нажимаю, я хочу узнать, какой из них.

Я знаю, что могу сделать инструкцию Switch для getId() но, скорее всего, сможет получить по названию элемента.Есть ли простой способ сделать это?

Ответы [ 3 ]

1 голос
/ 08 марта 2011

Я думаю, что вы имеете в виду, когда говорите «получить имя», это строка идентификатора из ресурсов.Таким образом, вы бы получили следующее предложение:

switch(view.getId()) {
    case R.id.HomeButtonOne:
        // Do Button One Action
        break;
    case R.id.HomeButtonTwo:
        // Do Button Two Action
        break;
}

В противном случае, пожалуйста, уточните подробнее, чего вы пытаетесь достичь.

0 голосов
/ 08 марта 2011

Просто создайте класс, который реализует OnClickListner и установите экземпляр для ваших представлений:

class MyListener implements OnClickListener() {
 // ...
}

MyListener listener = new MyListener();

View view = (View) findViewById(R.id.myViewId);
view.setOnClickListener(listener);
view = (View) findViewById(R.id.myAnotherViewId);
view.setOnClickListener(listener);

...
0 голосов
/ 07 марта 2011

У вас есть несколько вариантов.

  1. Вы можете расширить View созданным вами классом и включить дополнительную идентифицируемую информацию. Затем в onClick приведите View к вашему типу класса.

  2. Вы можете использовать Адаптер , чтобы лучше управлять своими представлениями. Это работает лучше всего, если вы отображаете представления данных вместо инертных макетов или Drawables.

Все сводится к тому, что вы хотите сохранить и что вы просматриваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...