2013-04-18 23 views
0

我有一個字符串數組與數字「25」,「50」,「75」,「100」 和我正在使用下面的方法來洗牌的位置的項目。按鈕setText從洗牌清單項目位置顯示錯誤的結果

public List<String> listNums() { 

    List<String> numList = Arrays.asList(Nums); 

    Collections.shuffle(numList); 
    return numList; 

我也有這個方法到列表中的項目分配到4個按鈕:

protected void SetTxtNums(){ 
    NumGenerator numGen = new NumGenerator(); 

    bNum2.setText(numGen.listNums().get(0).toString()); 
    bNum3.setText(numGen.listNums().get(1).toString()); 
    bNum4.setText(numGen.listNums().get(2).toString()); 
    bNum5.setText(numGen.listNums().get(3).toString()); 
} 

而且我在另一個按鈕,試圖通過點擊文本更改爲上面的扣子,這不工作。 的onclick碼是這樣的:

case R.id.bNumGen: 
     SetTxtNums();   
     break; 

的問題是,產生dublicate值。我希望每個按鈕都有不同的編號,只是要改變的位置。

如果我包括用於測試這樣的敬酒:

Toast.makeText(getApplicationContext(), numGen.listBigNums().toString(), Toast.LENGTH_LONG).show(); 

然後舉杯我得到正確的結果,按鈕是完全不同的,與兩個甚至三個它們的值相同。 我的錯誤在哪裏?

回答

1

首先你在不同的列表上洗牌,而不是所需要的。第二,你的邏輯是錯誤的。嘗試這樣的事情。

List<String> numList = Arrays.asList(Nums); 
public List<String> listNums() { 
return numlist; 
} 

public void shuffleList() { 
    Collections.shuffle(intList); 
    return numList; 
} 

現在這樣做:

protected void SetTxtNums(){ 
    NumGenerator numGen = new NumGenerator(); 
    numGen.shuffleList(); 

    bNum2.setText(numGen.listNums().get(0).toString()); 
    bNum3.setText(numGen.listNums().get(1).toString()); 
    bNum4.setText(numGen.listNums().get(2).toString()); 
    bNum5.setText(numGen.listNums().get(3).toString()); 
} 
+0

沒有不同的列表,只是一個錯字(intlist)。我已更正了代碼 –

+0

@ dancer_69,但我的解決方案應該可行。你試過嗎? –

+0

是的,它的工作表示感謝。但是,你能解釋我的邏輯錯誤是什麼(如果不是很多的話)? –

0
numGen.listNums() 

每次返回一個新的隨機列表。