我已经创建了一个ScrollView,并用附加了OnClickListeners的ImageViews填充它,但是现在当我尝试滚动ScrollView时,似乎OnClickListeners阻碍了并且没有给出平滑的滚动。
有没有办法解决这个问题,除了使用ListView而不是ScrollView?
谢谢!
答案 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();
...
}
}