Я занимаюсь программированием Android.Я добавляю кнопки в представление.Каждая кнопка имеет свое поведение для функции 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);
}
РЕДАКТИРОВАТЬ: Таким образом, увидев предложения для лямбда, можно ли сделать что-то вроде ниже, где есть общий метод и просто принять тело в качестве параметра?
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
});