2016-04-26 86 views
0

我正在開發一個Android應用程序。我已經創建了一些動態的切換按鈕,他們也可以點擊...一次切換一個按鈕

我想實現的是切換任何特定的按鈕,並確定。 但當我切換任何其他按鈕時,所有其他切換按鈕應該熄滅..

像我一次可以切換任何一個按鈕。如果其他人按前一個應該關閉。

有動態數量的按鈕..

我不知道如何實現這一點。

這裏是我的代碼:

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

    final ToggleButton btn = new ToggleButton(xxxxx.this); 
     String g = contactList.get(i).toString(); 
     Pattern p = Pattern.compile("\\{([^}]*)\\}"); 
     Matcher m = p.matcher(g); 

     while (m.find()) { 

     String[] po=m.group(1).split("="); 
     btn.setId(i); 
     btn.setTextOn("play"); 
     btn.setText(po[1]); 
     btn.setTextOff(po[1]); 

     final int id_ = btn.getId(); 
     Rowlayout layout = (org.xxxx.xxx.ui.Rowlayout) findViewById(R.id.adios); 
     layout.addView(btn); 

    btn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
    Toast.makeText(InCallScreen.this, 
    list2.get(id_) + "", Toast.LENGTH_SHORT).show(); 


       } 
      }); 
    } 
} 

我已經花了上有3個天,但仍停留在它,任何一個能幫助我。這將是非常感謝....

+1

既然你說它不*必須是* ToggleButtons,看看RadioButton和RadioGroup:http://stackoverflow.com/questions/10107532/only-one-radio-button-selected-at -a時間 – NSimon

+0

我已經試過這個RadioButton。它已經實現了,但是現在需求是ToggleButton或者簡單的按鈕..因爲在打開和關閉的時候切換按鈕被兩次監聽。 –

+0

@Addi.Star你可以使用' .setChecked(false)'方法來設置你的按鈕到Un檢入for循環 –

回答

0

此代碼適合我完美。不過,我已經刪除了很多代碼來簡化答案。所以相信你可以修改我設置的這些值,因爲我不知道sez的值或rowlayout的值,我們用sez = 10替換了它們的值,將佈局替換爲線性佈局。 反正這裏是代碼。

public class MainActivity extends Activity 
{ 
     int sez; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
      sez = 10; 
      for (int i = 0; i<sez; i++ ){ 

        final ToggleButton btn = new ToggleButton(MainActivity.this); 
          btn.setId(i); 
          btn.setTextOn("play"); 
          btn.setText("click"); 
          btn.setTextOff("off"); 

          final int id_ = btn.getId(); 
          LinearLayout layout = (LinearLayout) findViewById(R.id.mainLinearLayout); 
          layout.addView(btn); 

          btn.setOnClickListener(new View.OnClickListener() { 
              public void onClick(View view) { 
                Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show(); 
                int buttonId = btn.getId(); 
                for(int ii = 0; ii<sez; ii++) 
                { 
                  if(ii!=buttonId) 
                  { 
                    ToggleButton ButtonToOff = (ToggleButton)findViewById(ii); 
                    ButtonToOff.setChecked(false); 
                  } 
                } 
              } 
            }); 
        } 
      } 
} 

您可能必須添加到代碼中的部分主要是onClick()方法。

希望有所幫助! :)

+0

偉大的......成功..... :-)乾杯... –

+0

塞斯沒有動態按鈕....無論如何,我管理非常感謝您的努力。這是一個很好的答案 –

+0

我很高興它幫助你。是的,但我沒有sez的價值,所以爲了簡單起見,我只是使用了一個隨機值。 :) –