Вам нужно что-то вроде этого
a1.setOnClickListener(new View.OnClickListener({
public void onClick(View v) {
switch (v.getId()) {
case (1):
Toast.makeText(ScrollView1.this, "id200", Toast.LENGTH_LONG).show();
break;
}
}
}));
Обновление из комментария
Вы должны сохранить все ваши представления изображений в списке (или массиве), реализовать onClickListener (а не использовать его как анонимный внутренний класс) и добавить их в цикл for, что-то вроде этого.
class MyOnClickListener implements View.OnClickListener{
public void onClick(View v) {
// do something with your View v for example ((ImageView)v.setImageBitmap(yourImage)
switch (v.getId()) {
case (1):
Toast.makeText(ScrollView1.this, "id200", Toast.LENGTH_LONG).show();
break;
}
}
}
MyOnClickListener listener = new MyOnClickListener();
// cycle through adding listener to yuor view
for(ImageView view : imageViews) {
view.setOnClickListener(listener)
}
Если вы хотите выполнить определенную функцию в представлении, вы получаете его в качестве аргумента и можете выполнять с ним любую операцию.
// do something with your View v passed as onClick param, for example ((ImageView)v.setImageBitmap(yourImage)
Обновление из комментария.
Код, предложенный asker:
ArrayList<ImageView> imageViews = new ArrayList<ImageView>();
imageViews.add(IM1); // add others ...
for(ImageView imgView : imageViews){
IM1.setOnClickListener(this);
}
public void onClick(View v){
if((ImageView)v == IM1) { // do something }
}
Это должно сработать, но вы хотите определить OnClickListener
как отдельный класс (вероятно, внутренний класс). Ваши ImageViews должны быть определены и настроены в отдельный класс (возможно, в упражнении), а затем вы должны добавить свой OnClickListener
, вызвав setOnClickListener
из упражнения (как описано в моем ответе выше). То, что вы делаете, это смешиваете слушателя и объекты, которые он слушает, которые не очень объектно ориентированы и, как правило, довольно плохая практика.