2010-11-07 43 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