2010-11-07 42 views
0

我有一組單詞。當活動啓動時,它會顯示一個單詞,然後當您單擊該屏幕時,它會顯示數組中的另一個隨機單詞。我能夠得到這個(有一些幫助),但我有點卡住了。當您單擊屏幕顯示一個新單詞時,如何確保該單詞尚未從數組中顯示出來。這是我到目前爲止。如何阻止陣列中的重複輸出?

private String[] myString; 
public static final Random rgenerator = new Random(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.study); 

    //Takes a random item from array and creates string 
    Resources res = getResources(); 
    myString = res.getStringArray(R.array.list); 
    String q = myString[rgenerator.nextInt(myString.length)]; 

    //Displays random array string in TextView 
    TextView wordTextView = (TextView) findViewById(R.id.word); 
    wordTextView.setText(q); 

    //Set up click listener for new word 
    View newWord = findViewById(R.id.word); 
    newWord.setOnClickListener(this); 

} 

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.word: 
     //Takes a random item from array and creates string 
     String q = myString[rgenerator.nextInt(myString.length)]; 

     //Displays random array string in TextView 
     TextView wordTextView = (TextView) findViewById(R.id.word); 
     wordTextView.setText(q); 
    } 
} 

回答

1

如果你想一想,你有兩種方式來做到這一點:

  1. 顯示一個字後,從列表中刪除。然後,下次您從列表中選擇一個隨機單詞時,它將不會在那裏。這隻適用於你有可修改的列表。
  2. 保持跟蹤你已經所示的話,如果你碰巧選擇您先前選擇的一句話,只是選擇另一個
+0

是的,我猜那些是我的選擇。我是新來的android編程,所以我不確定實現任何選項。如果我有一個開始的位置,我可以弄清楚。有任何想法嗎? – 2010-11-07 20:12:38

+1

好吧,這只是java,所以你可以使用'ArrayList'來保存你的單詞列表和刪除項目,或者保存你顯示的單詞列表。你是新來的android編程,或一般編程? – 2010-11-07 20:49:23

+0

新的android編程和新的編程。我是一個Web開發人員,所以我有一些JavaScript和XML的經驗,但即使如此,編程沒有HTML或CSS一邊對我來說是新的。 – 2010-11-07 21:40:56

0

我的建議是使用ArrayList。如果你想保留內容,那麼它可能需要2個ArrayLists。

這是非常簡單的實際上是:

List wordsList = new ArrayList<String>(); 
List usedList = new ArrayList<String>(); 

String s = wordsList.get(rgenerator.nextInt(wordsList.size())); 

wordsList.remove(s); 
usedList.add(s); 

第二個名單是可選的基礎上,如果你想擁有你所使用的單詞的列表。如果你不需要它,那麼你可以刪除「usedList」這一行。對不起,如果有任何錯誤。有點草率寫了這個。在任何一種情況下,在Javadocs中查找ArrayList,你就會更好地理解它。你實際上是從ArrayList中刪除String,所以在這種情況下你不必擔心重複。

+0

謝謝。這有很多幫助/。我能夠在array.xml中寫出列表並將其列入列表中嗎?如果是這樣,我使用數組,字符串數組,還有其他方法嗎? – 2010-11-10 04:14:57