如何从android上的字符串数组中读取项目

时间:2013-07-24 12:50:02

标签: android arrays

我遇到了从字符串数组逐个读取项目的问题。例如,我得到了包含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中单击它会显示数组中的随机项。

问题是,如何从字符串数组中随机制作显示项。比如,它从显示开始,然后点击它显示第二,依此类推,直到数组结束 请帮忙!

4 个答案:

答案 0 :(得分:3)

您无法以这种方式初始化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);
    }
}

答案 1 :(得分:2)

声明变量

int currentIndex=0;

在此onClick方法之外。

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

希望它有效。

答案 2 :(得分:2)

<强>尝试

int i=0;
String q = myString[i];
i++;

答案 3 :(得分:1)

strings.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>

java

for (int i = 0; i < getResources().getStringArray(R.array.month).length; i++) {
    Log.e("Array",""+getResources().getStringArray(R.array.month)[i]);
}