【问题标题】:Going through array element OnClickListener android studio遍历数组元素 OnClickListener android studio
【发布时间】:2017-09-01 20:49:15
【问题描述】:

每次单击按钮时我都在努力遍历数组的每个元素,我可以在每次单击按钮时增加或减少计数器,但我想使用 for 循环或 while 循环来进行计数或遍历数组的每个元素。

这是我的代码:

b.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          for (j = 0; j < 3; j++) {
              d = String.valueOf(amp[j]);

              Toast.makeText(MainActivity.this, d, Toast.LENGTH_LONG).show();
          }//outer
      }
});

我还声明了一个全局数组变量int[] amp = {4,8,7};

问题是循环在按钮单击时打印每个元素,但我想要的是在第一次单击时打印数组的第一个元素,如果我再次单击按钮然后打印数组的第二个元素,依此类推。

【问题讨论】:

  • 你可以创建像 int numberOfClicks 这样的变量,并根据它的值,打印数组

标签: java android loops button click


【解决方案1】:

你可以使用类似的东西:

int counter = 0;

b.setOnClickListener(new View.OnClickListener() {
     @ Override public void onClick(View v) {
            d = String.valueOf(amp[counter]);
            Toast.makeText(MainActivity.this, d, Toast.LENGTH_LONG).show();
            counter++;
            if(counter>amp.length)
                counter=0;
    }
});

【讨论】:

  • 非常感谢 Mohammed Bakr Sikal,但我知道这种方式,但我需要使用 forloop 或 while 循环的索引号,例如我希望根据我的索引打印我的数组列表,例如我有数组 int amp[] ={5,3,7} 我想一次打印每个元素,但使用循环的索引值,例如 for(int i=0i
  • 使用预期的输入和输出编辑您的帖子。
  • 好的,我想在每次点击谷歌地图时创建标记,然后如果我使用循环索引,我可以处理单个标记以删除它们,但是如何在没有硬编码的情况下从谷歌地图中删除单个标记,所以我喜欢获取数组元素的结果,但使用 while 或 do 或 for 循环,所以我需要使用循环索引
  • 我在帖子中建议的计数器就像循环的手动索引。您可以使用 map.clear() 然后添加新标记。或者,另一种选择是在开头插入所有标记,隐藏它们 (marker.setVisible(false);),然后单击,您只是使具有该索引的标记可见。
【解决方案2】:

您可能不需要 for 循环或 while 循环来执行此操作。它可以简单地通过使用索引变量和 if/else 语句来完成。这里index是一个初始化为0的成员变量。

b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(index < amp.length){ 

                d = String.valueOf(amp[j]);
                Toast.makeText(MainActivity.this, d, Toast.LENGTH_LONG).show();

                // Increment index until we hit the last element
                index++;

            }else {
                // You can reset the index here so it starts at 0 once again
                index = 0;
            }
        }
});

【讨论】:

  • 谢谢 11m0 好的,我会告诉你为什么我需要循环......因为我想在每次点击时创建一个 LAtLing 列表,一个标记将添加到谷歌地图,然后点击每个我想要的标记能够删除,我认为除非您有循环索引,否则无法删除单个标记,例如,如果我在元素索引上说添加标记,那么 io 可以删除循环索引处的标记 aswel
  • 我想做什么我希望能够在位置循环中添加标记,然后我可以在位置循环中使用 marker.remove,而无需知道它自动完成的索引
  • 将创建新线程以要求谷歌地图感谢您的回答a
猜你喜欢
  • 2012-12-03
  • 2015-01-16
  • 2021-08-12
  • 2013-06-23
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多