【问题标题】:how to read items from string-array on android如何从android上的字符串数组中读取项目
【发布时间】:2013-07-24 12:50:01
【问题描述】:

我从字符串数组中逐个读取项目时遇到问题。例如,我得到了包含 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,依此类推,直到数组结束。
请帮忙!

【问题讨论】:

    标签: android arrays


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      声明一个变量

      int currentIndex=0;
      

      在这个onClick 方法之外。

      在

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

      希望它有效。

      【讨论】:

      • 谢谢你,伙计!有效!我的错误是我的计数器在 onClick 方法中。再次感谢!
      • 使用IndexOutOfBoundsException (n = array.lenght) 点击 n 次后会崩溃。将tv.setText(myString[currentIndex++]); 更改为tv.setText(myString[currentIndex++ % myString.length]);
      【解决方案3】:

      试试

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

      【讨论】:

        【解决方案4】:

        字符串.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]);
        }
        

        【讨论】:

          猜你喜欢
          • 2011-11-30
          • 1970-01-01
          • 1970-01-01
          • 2019-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-16
          • 2018-07-22
          相关资源
          最近更新 更多