【问题标题】:Looping array with while get only last value使用while循环数组只获取最后一个值
【发布时间】:2021-11-13 13:38:45
【问题描述】:

我有三个数组

int[] image = {R.drawable.img1,R.drawable.img2}    int[] sound= {R.raw.m1,R.raw.m2}    String[] nom ={"el1","el2"}

我尝试使用 imageview 更改视图,单击按钮时来自这些数组的文本,但我只从三个数组中获得了最后一个值,这是我在 onclick 方法时调用的方法

  private void updateData() {

       while (i<nom.length) {
           ImageView.setImageResource(image[i]);
           textview.setText(nom[i]);
           mysong = MediaPlayer.create(Activity.this, sound[i]);
           mysong.start();
           i++;
       }

}

【问题讨论】:

  • i的初始值是多少?你已经提到了。
  • @AKSingh - 我想你的意思是“你还没有提到:”。
  • @user16632363 是的,我是想说。
  • 也许这是一个错字 ImageView.setImageResource(image[ir]);是我而不是我!
  • 我被初始化 0

标签: java arrays android-studio


【解决方案1】:

试试这个....

int anInt = 0;

OnClick 之后

 private void updateData() {
       if (anInt < image.length - 1) {
          anInt++;
       } else {
          anInt = 0;
       }

       ImageView.setImageResource(image[anInt]);
       textview.setText(nom[anInt]);
       mysong = MediaPlayer.create(Activity.this, sound[anInt]);
       mysong.start();
  }

注意:确保所有三个数组大小相同...

【讨论】:

  • 它可以工作,但是在这个活动之后它必须开始一个新的活动。在我单击按钮之前,Android 会启动其他活动。
  • 对不起,我听不懂你在说什么......
  • 感谢@jay,它有效。这是一个粗心的错误
【解决方案2】:

试试这个....

 Random random = new Random();
 private void updateData() {
       int random_number = random.nextInt(image.length);
       ImageView.setImageResource(image[random_number]);
       textview.setText(nom[random_number]);
       mysong = MediaPlayer.create(Activity.this, sound[random_number]);
       mysong.start();
  }

注意:确保所有三个数组大小相同...

【讨论】:

  • 谢谢,但我希望它们按升序排列
  • 好的..检查我的下一个答案..
猜你喜欢
  • 2017-04-25
  • 2019-08-01
  • 2015-03-10
  • 2015-04-08
  • 1970-01-01
  • 2018-09-21
  • 2019-07-07
  • 2020-07-30
  • 2011-06-17
相关资源
最近更新 更多