我正在创建一个应用程序,根据用户输入的值生成按钮。每个按钮都有自己的XML定义的功能。现在我的主要问题是如何缩短这些代码。
name[0].setClickable(true);
name[0].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
name[0].setText("kjghjbjhb");
}
});
name[2].setClickable(true);
name[2].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
name[2].setText("kjghjbjhb");
}
});name[1].setClickable(true);
name[1].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
name[1].setText("kjghjbjhb");
}
});
和soo on .....一次又一次地写这些代码是不可能的,因为生成的按钮是动态的,我不知道将生成多少个按钮。请告诉我们是否有其他方法可以做到这一点。
答案 0 :(得分:3)
这样的东西?
createButton(int i){
name[i].setClickable(true);
name[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
name[i].setText("kjghjbjhb");
}
});
}
使用此方法,您还可以进行for循环:
for (int i = 0; i<name.length; i++){
createButton(i);
}
答案 1 :(得分:0)
嗯,你看到它的退出很容易..
这里我指定要执行的步骤。
ArrayList ar = new ArrayList();
按钮b1 =新按钮(); ar.add(B1);
A类扩展活动{ //你的OnCreate和其他业务逻辑的东西
私有final类MyListener实现了View.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
v.setText("kjghjbjhb");
}
}
}
请注意,我在onClick中使用对象v的引用设置文本。同时使这个班级单身。
MyListener listener = MyListener.getInstance(); b.setOnClickListener(受听者);
在某些事件或用户操作上创建按钮时,您可以选择此方式。如果您需要在循环中创建按钮,可以使用循环中的第1步和第3步。
我希望这对你有所帮助。