ScrollView为每个项目添加了OnClickListeners?

时间:2012-02-17 12:18:15

标签: android

我已经创建了一个ScrollView,并用附加了OnClickListeners的ImageViews填充它,但是现在当我尝试滚动ScrollView时,似乎OnClickListeners阻碍了并且没有给出平滑的滚动。

有没有办法解决这个问题,除了使用ListView而不是ScrollView?

谢谢!

1 个答案:

答案 0 :(得分:2)

您不必为每个ImageView都有一个OnClickListener。

回调定义是

public abstract void onClick (View v)

其中v是点击的视图。

根据您的目的,您可以识别特定视图。如果你只想做一些通用的东西(例如,应用色调),那么这非常简单

...
public void onClick(View v) {
    ImageView iv = (ImageView) v;
    iv.setTint(Color.BLUE); // Or whatever generic operation you want
} 

如果您需要专门识别视图,例如它是XML菜单的一部分,然后我通常使用itemID来识别它

...
public void onClick(View v) {
    int id = v.getId();
    switch (id) {
        case R.id.save:
          //do stuff
          break;
        case R.id.open:
           //do stuff
           break;
    }
} 

如果视图不是静态的,那么您可以使用setTag()getTag()方法来唯一标识(并将有用的数据关联!)与每个视图:

...
public void onClick(View v) {
    // the MyViewInfo object was associated with the view somewhere else, presumably when the view was created
    MyViewInfo info = (MyViewInfo) v.getTag();
    File datafile = info.getFileName();
    ...
    }
}