我参与了我的代码,我在TextView
中随机显示strings.xml
中数组中的项目
问题是,我没有这么多项目,大多数时候,即使已经显示,它也显示相同的内容。
有没有办法只在数组完成后随机显示相同的项目并看到所有项目?然后从头开始再做同样的事情。
代码的一部分是:
private static final Random rgenerator = new Random();
......
Resources res = getResources();
myString = res.getStringArray(R.array.My_Array);
String q = myString[rgenerator.nextInt(myString.length)];
textView.setText(q);
谢谢!
答案 0 :(得分:2)
希望这有帮助 -
TextView tvData;
SparseBooleanArray stringsShown;
Button btnShowRandom;
int arraySize;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvData = (TextView) findViewById(R.id.tvData);
btnShowRandom = (Button) findViewById(R.id.btnShowRandom);
Resources res = getResources();
myString = res.getStringArray(R.array.string_array_data);
arraySize = myString.length;
stringsShown = new SparseBooleanArray();
setShownArray();
// event on which random items is to be shown
btnShowRandom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showRandomText(rgenerator.nextInt(arraySize));
}
});
}
private void showRandomText(int position) {
if (isAllItemShown()) {
//reset array
setShownArray();
}
if (!stringsShown.get(position)) {
String q = myString[position];
stringsShown.put(position, true);
tvData.setText(q);
} else {
showRandomText(rgenerator.nextInt(arraySize));
}
}
private boolean isAllItemShown() {
for (int i = 0; i < stringsShown.size(); i++) {
if (!stringsShown.get(i)) {
return false;
}
}
return true;
}
private void setShownArray() {
for (int i = 0; i < arraySize; i++) {
stringsShown.put(i, false);
}
}