【问题标题】:setOnClick for 100 buttons为 100 个按钮设置 OnClick
【发布时间】:2012-05-19 23:21:03
【问题描述】:

我有 100 个按钮(从 button000 到 button 999)。有什么方法可以为所有这些设置 setOnClick 吗?因为所有按钮都具有相同的功能。 提前致谢。

【问题讨论】:

  • 把它们放在一个列表中,遍历列表,做你需要做的事情。
  • 使用 Button 并扩展它并在其中声明 setOnClick。

标签: android button onclick buttonclick onclicklistener


【解决方案1】:

如果你的按钮在布局中,那么就这样做。

int childcount = ll.getChildCount();
for (int i=0; i < childcount; i++){
      View v = ll.getChildAt(i);
      v.setOnCLickListener(this);
}

【讨论】:

  • 谢谢。我可以再问你一个问题:我如何识别所有这些?我使用此查询定义了 1 个按钮: Button btn000 = (Button) findViewById(R.id.btn000);
  • if(v instanceof Button){ 我们有一个 Button }else{skip it} 确保您只在按钮上设置监听器
  • 也可能是将这 1000 个按钮与其他按钮区分开来,您可以使用 btn000.setTag("mybutton"),依此类推,其余 999 个按钮具有相同的标签并在 onClick(view v) 回调中使用v.getTag();
【解决方案2】:

朋友试试这个方法

import android.view.View.OnClickListener;

public class MyActivity extends Activity implements OnClickListener {

  @Override public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     Button buttonA = (Button) findViewById(R.id.buttonA);    
     buttonA.setOnClickListener(this);
     Button buttonB = (Button) findViewById(R.id.buttonB); 
     buttonB.setOnClickListener(this);
  }

  //etc... etc...

 public void onClick(View v) {

  switch (v.getId()) {
     case R.id.buttonA: 
      // do something
      break;
     case R.id.buttonB:
      // do something else
      break;
  }
}

【讨论】:

  • 我认为他想避免打字。
【解决方案3】:

现在我可以说最简单的方法
使用 button000.setOnclicklistener(this);

  :

  :

 button999.setOnclicklistener(this);

并在当前类中实现 Onclicklistener....

【讨论】:

    【解决方案4】:

    如果您确定这是您的应用创建 1000 个按钮的最佳方式,那么它将是这样的:

    Button [] my_button=new Button[1000];
    LinearLayout ll=(LinearLayout)findViewById(R.id.mylayout);
    for (int i=0;i<1000;i++){
       my_button[i]=new Button(this);
       my_button[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                              LayoutParams.WRAP_CONTENT));
       my_button[i].setText("button "+i);
       ll.addView(my_button[i]);
       my_button[i].setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
             ////click event
          }
       });
    }
    

    【讨论】:

      【解决方案5】:

      只需将您的按钮添加到数组中,然后 只需循环按钮并在侦听器上调用以下代码块:

      for (int i=0; i < buttonArray.length; ++i){
            buttonArray[i].onClick(this);
      }
      

      【讨论】:

        【解决方案6】:

        有两种方法,一种是你可以通过onClick方法在xml布局文件中设置onClick,你可以定义方法,当按钮被点击时应该调用。当你在xml中定义按钮时,这种方法是合适的。

        如果您在 Activity 中添加按钮,并且如果您在循环中添加,那么您可以这样做

        for(int i=0; i<100; i++)
        {
           //Create and Add button
           btn.setOnClickListener(new OnClickListener()
           {
               public void onClick(View view)
               {
                    //Operations
               }
           });
        }
        

        【讨论】:

          【解决方案7】:

          动态制作按钮的最佳方法

           Integer[] button_Ids = {R.id.btn000,R.id.btn001...............,R.id.btn999};
           for(int i=0;i<100;i++)
           { 
           Button btn = (Button)findViewById(button_ids[i]);
            btn.setOnClickListner(this);
            }
            @Override
           public void onClick(View v)
                   {
                   Toast.make(getApplicationContext,"Hello",1000).show();
                   }
          

          【讨论】:

            【解决方案8】:

            如果所有按钮的功能完全相同,那么您可以简单地使用

            private OnClickListener mListenr=new OnClickListener(
            @Override
            public void onClick(View v) {
            //Whatever you want
            }
            
            for(int i=0; i<100; i++)
            {
            mButton[i].setOnClickListener(mListenr);
            }
            

            您可以参考this 了解实现监听器的方法。

            【讨论】:

              猜你喜欢
              • 2023-03-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-01-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多