在Web开发中,我们有一些名为event delegation
的东西 - 当父DOM元素接收其子代的所有事件时。这主要是出于性能原因而完成的。 android有这样的东西吗?例如,我有LinearLayout
和100个孩子TextView
。我不想为每个TextView
添加100个事件监听器,但只添加一个到LinearLayout
并在其中捕获事件?
例如,而不是:
for (int i = 0; i < length; i++) {
TextView tv = new TextView(getApplicationContext());
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {}
});
layout.addView(tv);
}
这样做:
for (int i = 0; i < length; i++) {
TextView tv = new TextView(getApplicationContext());
layout.addView(tv);
}
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// how to know here whether `v` is an instance of TextView or LinearLayout?
}
});