Android:数组完成后随机显示相同的项目

时间:2017-01-23 08:55:27

标签: android arrays


我参与了我的代码,我在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);

谢谢!

1 个答案:

答案 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);
    }
}