【问题标题】:How can I display Array items in a TextView by clicking button如何通过单击按钮在 TextView 中显示数组项
【发布时间】:2019-08-26 16:13:32
【问题描述】:

我正在开发一个 Android 应用程序,并尝试在 TextView 中显示一年中的所有月份。我需要通过按钮单击每个月显示一个。

这是我认为它可以工作的方式。

    package com.flixarts.ar.englishnow;

    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;

    public class saludos extends AppCompatActivity {
    private TextView espacioFrases;
    private Button next;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_saludos);
            monthsDisplay =(TextView)findViewById(R.id.espacioFrases);
            next = (Button)findViewById(R.id.next);
            next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //formularFrases();


        }
    });

}

String [] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September","October", "November", "December"};
String monthToDisplay = "";

public void showMonths(){

    for (int i=0 ; i<frases.length; i = i+1) {
        switch (i) {
            case 0 :
                monthToDisplay = months[i];
                monthDisplay.setText(monthToDisplay);
            case 1 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);
            case 2 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);
            case 3 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);
            case 4 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);
            case 5 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);
            case 6 :
                fraseamostrar = months[i];
                monthDisplay.setText(monthToDisplay);

        }


    }




}

这里的问题是只显示第一个月,一月,因为每次我调用 showMonths() 方法时,变量“i”都会初始化为 0,所以总是会显示第一个月。 我想保存变量 i 的值并加一(i++),这样我就可以显示所有月份,但每次调用函数时,我都会初始化为 0。

【问题讨论】:

  • 当你点击按钮时,你想显示一月到十二月吗?
  • 请添加中断;每个 case 语句结束后的语句

标签: java android for-loop button switch-statement


【解决方案1】:

如果您需要在下个月显示每次点击,请尝试以下代码。

package onsource.com.onsourceinspector.data.api;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; 

public class saludos extends AppCompatActivity {
private TextView monthsDisplay;
int i = 0;
private Button next;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_saludos);
    monthsDisplay = (TextView) findViewById(R.id.espacioFrases);
    next = (Button) findViewById(R.id.next);
    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showMonths();
        }
    });
}

String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
String monthToDisplay = "";

public void showMonths() {
    if (i > 11)
        i = 0;      
    monthsDisplay.setText(months[i++]);
 }    
}

【讨论】:

    【解决方案2】:
    public void showMonths(){
    
        for (int i=0 ; i<frases.length; i = i+1) {
            switch (i) {
                case 0 :
                    monthToDisplay = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 1 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 2 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 3 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 4 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 5 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
                case 6 :
                    fraseamostrar = months[i];
                    monthDisplay.setText(monthToDisplay);
            break;
    
            }
    

    【讨论】:

      【解决方案3】:

      保存当前索引

      String [] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September","October", "November", "December"};
      int currentMonthIdx = 0;
      

      之后,您将能够在每次按钮单击时调用此函数:

      public void onButtonClick() {
          currentMonthIdx = (currentMonthIdx + 1) % months.length;
          monthsDisplay.setText(months[currentMonthIdx]);
      }
      

      不要忘记在启动时显示第一个月:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_saludos);
              monthsDisplay =(TextView)findViewById(R.id.espacioFrases);
              monthsDisplay.setText(months[0]);
      }
      

      【讨论】:

      • Ivan 现在我可以通过单击按钮查看所有月份的一月、二月、三月...十二月。但是十二月之后又到一月,你知道十二月之后怎么阻止吗?
      • 只需将“currentMonthIdx = (currentMonthIdx + 1) %months.length”替换为“currentMonthIdx++;”即可。您还需要检查边界,否则您将捕获 OutOfBoundsException...
      • if (currentMonthIdx
      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多