Допустим, вы генерируете несколько похожих представлений.Вы можете установить OnClickListener
для каждого вида отдельно:
button1.setOnClickListener(new OnClickListener ... );
button2.setOnClickListener(new OnClickListener ... );
...
Затем вам нужно создать уникальный метод onClick
для каждого вида, даже если они выполняют похожие действия, например:
public void onClick(View v) {
doAction(1); // 1 for button1, 2 for button2, etc.
}
Это потому, что onClick
имеет только один параметр, View
, и он должен получать другую информацию из переменных экземпляра или конечных локальных переменных во вложенных областях.Мы действительно хотим получить информацию от самих представлений .
Enter getTag
/ setTag
:
button1.setTag(1);
button2.setTag(2);
Теперь мы можем использовать тот же OnClickListenerдля каждой кнопки:
listener = new OnClickListener() {
@Override
public void onClick(View v) {
doAction(v.getTag());
}
};
По сути, у представлений есть способ воспоминаний .