如何在Java中的按钮数组上创建setOnClickListener

时间:2014-03-11 19:46:59

标签: java arrays button handler

我有一个动态的按钮阵列,我想知道如何处理每个按钮的onclick?我还希望用户从额外的设置菜单中给出按钮的数量。我尝试下面的代码,但给出错误的结果。 ..如何在java文件的按钮之间留出10dp的距离?我如何使用handleOnClick方法?

     LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout2);
     LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
     lp.bottomMargin=10;

       Button btn[] = new Button[oNumber];
    for (int i=0;i<oNumber;i++){
        btn[i] = new Button(this); // initialize it
        //btn[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
        btn[i].setText(oName[i]);
        btn[i].setTextColor(Color.rgb(255 , 00 , 00));
        btn[i].setId(i);

      btn[i].setTag(Integer.valueOf(i));

        // btn[i].setOnClickListener(handleOnClick(btn[i]));

        // btn[i].setOnClickListener(this);

        ll.addView(btn[i],lp);
    }

    for( int i = 0; i< btn.length; i++){
        btn[i].setOnClickListener(new OnClickListener() {
            public void onClick(View v){
                //do something

                 //if(v.getId()==0)

                Integer mp=((Integer) v.getTag()).intValue();


                 if( mp==0)  

                 {
                      //its Button 1  do what ever u want

                     Toast.makeText(getApplicationContext(), "Extra button 0...", Toast.LENGTH_SHORT).show();

                  }
                 if(mp==1)
                 {
                      //its Button 2  do what ever u want its Button 2


                 Toast.makeText(getApplicationContext(), "Extra button 1...", Toast.LENGTH_SHORT).show();

        }

            }
        });
    }

1 个答案:

答案 0 :(得分:0)

切换线路:

btn[i].setId(i);

使用:

btn[i].setTag(Integer.valueOf(i));

同时切换:

v.getId()==1

使用:

((Integer)v.getTag()).intValue()==1

对于保证金,您需要在setMargins()之后调用requestLayout()。