【问题标题】:Android how to get next item on array with button clickAndroid如何通过单击按钮获取数组中的下一个项目
【发布时间】:2014-02-14 19:45:59
【问题描述】:

我想在按钮单击时获取数组中的下一项。

数组是这样的:

String[] pickupLinesItems = { "a", "b", "c" };

然后我有这个用于微调器

public void onItemSelected(org.holoeverywhere.widget.AdapterView<?> parent,
        View view, int position, long id) {

    position = spinner.getSelectedItemPosition();

    SpinnerAdapter adap = spinner.getAdapter();

    if (adap.equals(pickupLinesAdapter)) {
        switch (position) {
        case 0:
            stopPlaying();
            speakMedia = MediaPlayer.create(this, R.raw.a);
            break;
        case 1:
             stopPlaying();
             speakMedia = MediaPlayer.create(this, R.raw.b);
             break;
        case 2:
             stopPlaying();
             speakMedia = MediaPlayer.create(this, R.raw.c);
             break;

        }
    }
}

public void onClick(View v) {
    // TODO Auto-generated method stub
    int index = 0;

    switch (v.getId()) {
    case R.id.next:
        // here i want to go on the next item on array
        break; 
    case R.id.back:
                    // here i wanna go back one item on the array
        break;
    }
}

我将如何做到这一点,我已经尝试了一切,但似乎无法得到它。我试图做一个 if 语句,但什么也没做。

【问题讨论】:

  • 那么,如果微调器在 b 上,您想要按下按钮将其更改为 c?
  • 使用一个 int 值,只是递增和递减

标签: android arrays button arraylist


【解决方案1】:

需要一个变量来保存在相同范围内声明的pickupLinesItems的当前索引 String[]pickLinesItems = { "a", "b", "c" };

例如:

int pickupLinesItemIndex = 0;

然后你可以这样做:

public void onClick(View v) {
    // TODO Auto-generated method stub

    switch (v.getId()) {
    case R.id.next:
        if(pickupLinesItemIndex < pickupLinesItems.length)
        {
          String pickupLine = pickupLinesItemIndex[++pickupLinesItemIndex];
        }
        break; 
    case R.id.back:
        if(pickupLinesItemIndex > 0)
        {
          String pickupLine = pickupLinesItemIndex[--pickupLinesItemIndex];
        }
        break;
    }
}

【讨论】:

  • 我确定您的意思是 ++pickupLinesItemIndex--pickupLinesItemIndex,您必须检查 pickupLinesItemIndex 是否大于数组大小或小于零
  • 您需要pickupLinesItems.length - 1 来检查最大值。
  • 试过这个ang什么也没发生,没有改变,没有给我错误,什么都没有。
【解决方案2】:

假设我的评论是正确的,你可以这样做:

//in your onClick
case R.id.next:
    int current = spinner.getSelectedItemPosition();
    spinner.setSelection(current++);
    break;

你可以在后面做同样的事情。另外,请务必检查边界条件(如果您在 c 上,请确保您转到 a 并且不要尝试超出数组的边界)。

【讨论】:

  • 我会说current++%3,否则他应该检查IndexOutOfBoundException
  • 我之前试过这个,但它没有工作,然后仍然没有,老实说我不知道​​为什么。它没有给我一个 arror 或任何它只是没有移动到下一个。
猜你喜欢
  • 2019-12-07
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多