2013-04-10 65 views
3

我已成功添加动态多个togglebuttonactivity。但我坚持处理setOnCheckedChangeListener每个togglebutton如何在Android中动态添加多个togglebutton的setOnCheckedChangeListener

我创建了演示代码片段。

linearLayout = (LinearLayout) findViewById(R.id.linearLayout); 

     for (int i = 0; i < 6; i++) { 

      el = new LinearLayout(this); 
      el.setOrientation(LinearLayout.HORIZONTAL); 

      LinearLayout.LayoutParams emailLinearParams = new LinearLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

      el.setLayoutParams(emailLinearParams); 
      el.setPadding(5, 5, 5, 5); 

      LinearLayout.LayoutParams emailTxtParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.9f); 

      TextView emailTxt = new TextView(this); 
      emailTxt.setText("demo"); 
      emailTxt.setLayoutParams(emailTxtParams); 
      emailTxt.setGravity(Gravity.CENTER_VERTICAL); 

      el.addView(emailTxt); 

      ToggleButton toggleEmailBtn = new ToggleButton(this); 

      LinearLayout.LayoutParams emailToggleBtnParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f); 

      toggleEmailBtn.setLayoutParams(emailToggleBtnParams); 

      el.addView(toggleEmailBtn); 

      linearLayout.addView(el); 

     } 
+0

发布您的代码处理onclick,因为根据你的问题的描述很难提出任何建议。 – Egor 2013-04-10 10:40:18

回答

0

尝试并有很好的答案:)

ToggleButton tglBtn[]; 

onCreate()

tglBtn = new ToggleButton[6]; 

    for (int i = 0; i < 6; i++) { 

      el = new LinearLayout(this); 
      el.setOrientation(LinearLayout.HORIZONTAL); 

      LinearLayout.LayoutParams emailLinearParams = new LinearLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

      el.setLayoutParams(emailLinearParams); 
      el.setPadding(5, 5, 5, 5); 

      LinearLayout.LayoutParams emailTxtParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.9f); 

      TextView emailTxt = new TextView(this); 
      emailTxt.setText("demo"); 
      emailTxt.setLayoutParams(emailTxtParams); 
      emailTxt.setGravity(Gravity.CENTER_VERTICAL); 

      el.addView(emailTxt); 

      tglBtn[i] = new ToggleButton(this); 

      LinearLayout.LayoutParams emailToggleBtnParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f); 

      tglBtn[i].setLayoutParams(emailToggleBtnParams); 

      el.addView(tglBtn[i]); 

      linearLayout.addView(el); 

      tglBtn[i] 
        .setOnCheckedChangeListener(handleOnClick(
          tglBtn[i], i)); 

     } 

使用的方法解决对togglebuttons

CompoundButton.OnCheckedChangeListener handleOnClick(
      final ToggleButton button, final int id) { 
     return new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton cbtn, boolean isCheck) { 
        Log.d(TAG, "clicked "+id); 
      } 
     }; 
    } 
+0

如果你解决了你的问题,那么在这里发布你的解决方案,用户将遇到同样的问题。 – 2013-04-14 11:39:34

+2

添加了我的答案,希望这对其他将遇到同样问题的人有所帮助。 – 2013-04-14 12:05:44

相关问题