我想为我的活动中的所有项目设置相同的onClickListener。可以用循环来做吗?不幸的是,我没有成功地尝试反思。 我的代码:
private void setUpOnClickListeners() {
Field[] fields = viewHolder.getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
Method[] m = field.getDeclaringClass().getMethods();
for (Method method : m) {
if (method.getName().contains("setOnClickListener")) {
method.invoke(field, onClickListener);
}
}
field.setAccessible(false);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v == viewHolder.mBtStartStop) {
presenter.onButtonStartStop();
} else if (v == viewHolder.mBtDetails) {
presenter.onButtonDetails();
} else if (...)
...
}
}
};
static class ViewHolder {
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
@Bind(R.id.activity_main_bt_stop)
Button mBtStartStop;
@Bind(R.id.activity_main_tv_how_many_hours)
TextView mTvHours;
@Bind(R.id.fragment_main_bt_details)
CircleButton mBtDetails;
...
...
}
由于布局中的许多领域,这将是一种便利......