2015-11-26 19 views
0

說我有4個按鈕。我想讓按鈕2隨意換成另一個按鈕。 所以,當用戶點擊按鈕2時,它應該與另一個按鈕(隨機)交換。在佈局中交換按鈕?

現在,button 2位於右下角。所以如果用戶再次點擊按鈕2,它可以選擇與其他三個按鈕交換 。

我已經試圖讓四個值的數組:

​​

而且已經把它們納入自己的佈局,並隨機與其他按鈕挑掉期的按鈕。但是,這對我來說不是很有效率。

如果你能指導我解決這個問題,我將非常感激!

感謝,

Ruchir你的按鈕與他們的數字

btn1.setTag(1); 
btn2.setTag(2); 
... 

回答

0

一組標籤,並把它們放入數組:

Button[] buttons = {btn1, btn2, btn3, btn4}; 

然後定義一個clickListener所有按鈕

View.OnClickListener btnListener = View.OnClickListener() { 
public void onClick(View v) { 

     swap((int) v.getTag()); 
    } 
}; 

然後將其分配給按鈕:

btn1.setOnClickListener(btnListener); 
btn2.setOnClickListener(btnListener); 
btn3.setOnClickListener(btnListener); 
btn4.setOnClickListener(btnListener); 

現在對於交換功能:

void swap(int butNum){ 

     Random ran = new Random(); 
     int randomNum = ran.nextInt(buttons.length - 1) + 1; 

     if(randomNum == butNum) randomNum += 1; 

     if(randomNum > buttons.length) randomNum = 1; 

     Button firstBut = getButtonByTagNum(butNum); 
     Button secondBut = getButtonByTagNum(randomNum); 

     String s1 = firstBut.getText(); 
     firstBut.setText(secondButton.getText()); 
     secondButton.setText(s1); 

     firstButton.setTag(randomNumber); 
     secondButton.setTag(butNum); 
} 

Button getButtonByTagNum(int tagNum){ 

    for(int i = 0; i < buttons.length; i++){ 

      if(((int) buttons[i].getTag()) == tagNum - 1){ 

       return buttons[i]; 
      } 
    } 
} 

它可能需要一點點的潤色和調試。但你明白了。