4

我从字符串数组中逐一读取项目时遇到问题。例如,我得到了包含 10 个项目的字符串数组:

<string-array name="arr">
    <item>First</item>
    <item>Second</item>
    <item>...</item>
    <item>Tenth</item>
</string-array>

所以我知道如何随机显示项目,我使用这个代码

Resources res = getResources();

myString = res.getStringArray(R.array.arr);

int length=myString.length;
int index=rgenerator.nextInt(length);
String q = myString[index];

tv = (TextView) findViewById(R.id.text);
tv.setText(q);

在 TextView 中,单击每个按钮都会显示数组中的随机项。

问题是,如何使字符串数组中的显示项目不是随机的。就像,它从显示 First 开始,然后单击它显示 Second,依此类推,直到数组结束。
请帮忙!

4

4 回答 4

4

您不能testArray以这种方式初始化您的字段,因为应用程序资源还没有准备好。将代码更改为:

package com.xtensivearts.episode.seven;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class Episode7 extends ListActivity {
String[] mTestArray;

/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // Create an ArrayAdapter that will contain all list items
    ArrayAdapter<String> adapter;

    mTestArray =  = getResources().getStringArray(R.array.testArray);    

    /* Assign the name array to that adapter and 
    also choose a simple layout for the list items */ 
    adapter = new ArrayAdapter<String>(
    this,
    android.R.layout.simple_list_item_1,
    mTestArray);

    // Assign the adapter to this ListActivity
    setListAdapter(adapter);
    }
}
于 2013-07-24T13:06:18.937 回答
2

声明一个变量

int currentIndex=0;

在这个onClick方法之外。

在里面

onClick(View v)
{
//Verify if only that btn is clicked
{
tv.setText(myString[(currentIndex++)%(myString.length)]);
}
}

希望它有效。

于 2013-07-24T12:55:54.577 回答
2

尝试

int i=0;
String q = myString[i];
i++;
于 2013-07-24T13:02:23.527 回答
1

字符串.xml

<string-array name="month">
    <item>Jan</item>
    <item>Feb</item>
    <item>Mar</item>
    <item>Apr</item>
    <item>May</item>
    <item>Jun</item>
    <item>Jul</item>
    <item>Aug</item>
    <item>Sep</item>
    <item>Oct</item>
    <item>Nov</item>
    <item>Dec</item>
</string-array>

爪哇

for (int i = 0; i < getResources().getStringArray(R.array.month).length; i++) {
    Log.e("Array",""+getResources().getStringArray(R.array.month)[i]);
}
于 2019-01-24T11:19:27.667 回答