2011-02-16 105 views
0

我正在制作一个应用程序,根据用户输入的值生成按钮。每个按钮都有自己定义在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"); 
     } 
    }); 

和洙.....一遍又一遍写这些代码是不可能的,因为产生的按钮是动态的,我不知道有多少按键将会产生。请告诉我们是否有其他方式可以做到这一点。

回答

0

那么你看到它的退出容易..

在这里,我指定要执行的步骤。

  1. 您必须通过新的Button()创建按钮;只需在集合中保存其引用即可ArrayList

ArrayList ar = new ArrayList();

Button b1 = new Button(); ar.add(b1);

  1. 现在创建一个实现View.OnClickListener的私有内部类。现在,按照规则执行的OnClick()等做你想要的东东在那里

A级延伸活动{// 你这里的OnCreate和其他商业逻辑

私人最终的东西类myListener的实现View.OnClickListener {

public void onClick(View v) { 
     // TODO Auto-generated method stub 
     v.setText("kjghjbjhb"); 
    } 

}

}

请注意,我在onClick中设置了对象v引用的文本。也让这个类单身。

  1. 现在设置创建这个类的实例(如MyListerner将是单例的对象将是一个)在setOnClickListener()这样

myListener的听者= MyListener.getInstance(); b.setOnClickListener(listener);

当某些事件或用户动作创建按钮时,您可以选择这种方式。如果你需要在循环中创建按钮,你可以使用循环中的第一步和第三步。

我希望这对你有帮助。

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); 
    }