从数组中选择项目

4

我有一个包含12个项的数组,我会对数组进行随机处理,然后希望能够随机选择其中一个问题,但是现在没有返回值,我不知道为什么,请问可以提供帮助吗?

我的数组:

<array name="OneTimesTables">
    <item>1 x 1 = </item>
    <item>1 x 2 = </item>
    <item>1 x 3 = </item>
    <item>1 x 4 = </item>
    <item>1 x 5 = </item>
    <item>1 x 6 = </item>
    <item>1 x 7 = </item>
    <item>1 x 8 = </item>
    <item>1 x 9 = </item>
    <item>1 x 10 = </item>
    <item>1 x 11 = </item>
    <item>1 x 12 = </item>
</array>

我的调用数组的代码:

CurrectQuestions = (TextView)findViewById(R.id.CurrentQuestion);

final TypedArray MathsArray = getResources().obtainTypedArray(R.array.OneTimesTables);
ArrayList<Integer> RandomNumbers = new ArrayList<>();
for (int i = 0; i < 12; i++){
    RandomNumbers.add(i);
}

Collections.shuffle(RandomNumbers);
int i = 0;

final int Question = MathsArray.getResourceId(RandomNumbers.get(i++), -1);
Toast.makeText(getApplicationContext(), "Question " + Question, Toast.LENGTH_SHORT).show();
CurrectQuestions.setText(Question);

使用 String.valueOf(Question),因为 Questionint 类型。 - ρяσѕρєя K
谢谢,它可以工作,但是它只返回0?为什么不是'i'或者在集合数组中的'i'的值呢? - RexDough
你必须使用以下循环,其中i=0,可能在第0个位置元素为零。 - Krishna Satwaji Khandagale
可能是由于 int i = 0; 的值不同,例如 int i = 3;,请检查 TextView 中显示的值。 - ρяσѕρєя K
它说 i++ 改变的值从未被使用,为什么呢? - RexDough
1个回答

1
我已经添加了代码,您可以从数组中获取随机文本,并可以调整它以获得洗牌列表,您面前有选择,
这是代码,它也可以在 github 上找到。
public class RandomTestActivity extends Activity {

    private String[] strings;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_random_test);

        strings = getResources().getStringArray(R.array.OneTimesTables);
        textView= (TextView)findViewById(R.id.RandomTestActivity_textView);
        Button button = (Button)findViewById(R.id.RandomTestActivity_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int count = (new Random()).nextInt(12);
                textView.setText(""+strings[count]);
            }
        });


        initializeUI();
    }

    private void initializeUI() {
        ArrayList<String> list = new ArrayList<>();

        for(String item: strings){
            list.add(item);
        }

        Collections.shuffle(list);

        for (String item:list){
            Log.d("TAG",""+item);
        }
    }

}

XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="activities.list.first.RandomTestActivity">

    <TextView
        android:id="@+id/RandomTestActivity_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/RandomTestActivity_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Next"
        android:textAllCaps="false" />
</LinearLayout>

输出 enter image description here

感谢 @Pankaj Nimgade - RexDough
@RexDough,不用谢,我很高兴能帮到你 :) - Pankaj Nimgade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接