在布局中交换按钮?

时间:2015-11-26 01:16:28

标签: java android string algorithm performance

说我有4个按钮。我希望按钮2总是随机换出另一个按钮。 因此,当用户点击按钮2时,它应该与另一个按钮交换(随机)。

现在,button 2位于右下角。因此,如果用户再次点击按钮2,则可以选择 与其他三个按钮交换。

我已经尝试过制作四个值的数组:

top_right, top_left, bottom_right, bottom_left

并将它们放入自己的布局中,随机选择的按钮与另一个按钮交换。但是,这对我来说效率不高。

如果你引导我解决这个问题,我将非常感激!

谢谢,

Ruchir

1 个答案:

答案 0 :(得分:0)

首先设置按钮的标记及其编号

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

并将它们放在一个数组中:

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

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

然后为所有按钮定义clickListener

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];
          }
     }
}

现在用于交换功能:

row

它可能需要一点点润色和调试。但是你明白了。