Android按钮问题

时间:2011-02-16 10:27:35

标签: android button onclick

我正在创建一个应用程序,根据用户输入的值生成按钮。每个按钮都有自己的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 .....一次又一次地写这些代码是不可能的,因为生成的按钮是动态的,我不知道将生成多少个按钮。请告诉我们是否有其他方法可以做到这一点。

2 个答案:

答案 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)

嗯,你看到它的退出很容易..

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

  1. 您必须通过新的Button()创建按钮;只需在Collection say ArrayList
  2. 中保存它的引用

    ArrayList ar = new ArrayList();

    按钮b1 =新按钮(); ar.add(B1);

    1. 现在创建一个实现View.OnClickListener的私有内部类。现在按照规则实现OnClick(),以及你希望在那里完成的东西
    2. A类扩展活动{ //你的OnCreate和其他业务逻辑的东西

      私有final类MyListener实现了View.OnClickListener {

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

      }

      }

      请注意,我在onClick中使用对象v的引用设置文本。同时使这个班级单身。

      1. 现在在setOnClickListener()中设置创建此类的实例(因为MyListerner将是单例,对象将是一个)
      2. MyListener listener = MyListener.getInstance(); b.setOnClickListener(受听者);

        在某些事件或用户操作上创建按钮时,您可以选择此方式。如果您需要在循环中创建按钮,可以使用循环中的第1步和第3步。

        我希望这对你有所帮助。