如何在单击按钮时一个接一个地获得数组项?

时间:2019-05-14 15:44:56

标签: java android

我正在学习android studio,我是一个完整的初学者。我的活动上有一个textview和一个按钮,我希望textview从strings.xml中的数组中获取字符串,并在单击按钮时进行更改。

我尝试了for循环,但它只给出一个值并停止。 这是strings.xml文件。

<resources>
<string name="app_name">myapp</string>

<string-array name="myarray">
    <item>Cow</item>
    <item>Pig</item>
    <item>Bird</item>
    <item>Sheep</item>
</string-array>
</resources>

这是mainActivityfile

package com.mlx.myapp;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
    Context context = this;
    String randomstr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String[] arrays = context.getResources().getStringArray(R.array.myarray);


        final TextView textview = (TextView) findViewById(R.id.textview);
        for (int i = 0; i < arrays.length; i ++ ) {
            randomstr = arrays[i];
        }

        final Button getrandom = (Button) findViewById(R.id.getrandom);
        getrandom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textview.setText(randomstr);
            }
        });
    }
}

现在,当我运行它时,它仅会在单击按钮时显示“绵羊”项,然后它不会改变,但是我希望它在每次按下时都会改变。

1 个答案:

答案 0 :(得分:1)

  • 您必须删除循环,因为它只是在randomstr中分配数组的最后一个值。
  • 之后,您必须在click方法内定义一个迭代器,并在每次单击时更新此迭代器,以便显示下一个值

    公共类MainActivity扩展了AppCompatActivity {     上下文上下文= this;     字符串randomstr;     int迭代器= 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        String[] arrays = context.getResources().getStringArray(R.array.myarray);
    
    
        final TextView textview = (TextView) findViewById(R.id.textview);
        for (int i = 0; i < arrays.length; i ++ ) {
            = arrays[i];
        }
    
        final Button getrandom = (Button) findViewById(R.id.getrandom);
        getrandom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                //Read the current value
                randomstr = arrays[iterator];
    
                //Display the current value
                textview.setText(randomstr);
    
                //Increment the iterator to read the next value
                iterator = iterator+1;
    
                //If we reached the length of the array, we reset the iterator
                if(iterator >= arrays.length) {
                   iterator = 0;
              }
            }
        });
      }
    }