【发布时间】:2023-03-09 03:50:01
【问题描述】:
我正在做一些安卓编程。我正在向视图添加按钮。每个按钮都有自己的onClick 函数行为。但是代码似乎是重复的。例如:
// the view
View v = new View(this);
// first button
Button b1 = new Button(this);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// some method body1
}
});
v.addView(b1);
// second button
Button b2 = new Button(this);
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// some method body2
}
});
v.addView(b2);
// nth button
// ...
有没有更简洁的方法来向视图添加按钮,例如将方法体传递给方法或其他方式?比如像:
public void addButton(MethodBody methodBody)
{
Button b = new Button(this);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
methodBody
}
});
v.addView(b);
}
编辑:所以在看到对 lambda 的建议之后,是否可以在有通用方法的情况下执行类似下面的操作,只将主体作为参数?
public void addButton(MethodBody methodBody)
{
Button b = new Button(this);
b.setOnClickListener(v ->
{
methodBody
}
);
v.addView(b);
}
编辑 2:我想我们可以做到这一点
// general method
public void addButton(OnClickListener onClickListener)
{
Button button = new Button(this);
// other stuff
button.setOnClickListener(onClickListener);
v.addView(button);
}
// run the method
addButton(v -> {
// some body
});
【问题讨论】:
标签: java android methods parameter-passing