2013-07-24 85 views
3

我从一个一个地读取字符串数组中的项目时遇到了问题。例如,我得到的字符串数组有10个项目:如何从android上的字符串数组中读取项目

<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,直到数组结束。
请帮忙!

回答

2

声明变量

int currentIndex=0; 

onClick方法之外。

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

希望工程。

+0

谢谢,男人!有效! 我的错误是我的柜台里面的onClick方法.. 再次感谢! – user1671523

+1

用“IndexOutOfBoundsException”(n = array.lenght)敲击n次后会崩溃。将'tv.setText(myString [currentIndex ++]);'改为'tv.setText(myString [currentIndex ++%myString.length]);' –

+0

@VladK。感谢您的建议。我按照你的说法编辑。 –

2

尝试

int i=0; 
String q = myString[i]; 
i++; 
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); 
    } 
} 
相关问题