Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复遍历此arraylist的问题?_Java_Android_Arraylist - Fatal编程技术网

Java 如何修复遍历此arraylist的问题?

Java 如何修复遍历此arraylist的问题?,java,android,arraylist,Java,Android,Arraylist,我使用两个按钮在一个包含12个月的arraylist中来回迭代,当我到达最后一个元素并按下prevButton时,应用程序崩溃,当我返回到第一个元素并点击下一个按钮时也会发生这种情况,我如何修复我的if station 我已尝试使用>=和执行此操作。在访问最后一个/第一个元素后,通过添加/减去1将I值更改为-1或months.size() 让我们仔细看看这个片段: if (i >= 0) { // let us assume that i = 0, we are getting insid

我使用两个按钮在一个包含12个月的arraylist中来回迭代,当我到达最后一个元素并按下prevButton时,应用程序崩溃,当我返回到第一个元素并点击下一个按钮时也会发生这种情况,我如何修复我的if station


我已尝试使用>=和执行此操作。在访问最后一个/第一个元素后,通过添加/减去
1
I
值更改为
-1
months.size()

让我们仔细看看这个片段:

if (i >= 0) { // let us assume that i = 0, we are getting inside
    Month month = months.get(i); // you are assigning first element of months, everything is fine
    monthTextView.setText("" + month); // some data operation - irrelevant
    i--; // anyway you are updating i to [i = -1]
}

// one "next" click later...

if (i < months.size()) { // condition is fine because i = -1
    Month month = months.get(i); // oooops tried to access months[-1] - ERROR
    monthTextView.setText("" + month);
    i++;
}

在访问最后一个/第一个元素后,通过添加/减去
1
,最后一次单击将
i
值更改为
-1
months.size()

让我们仔细看看这个片段:

if (i >= 0) { // let us assume that i = 0, we are getting inside
    Month month = months.get(i); // you are assigning first element of months, everything is fine
    monthTextView.setText("" + month); // some data operation - irrelevant
    i--; // anyway you are updating i to [i = -1]
}

// one "next" click later...

if (i < months.size()) { // condition is fine because i = -1
    Month month = months.get(i); // oooops tried to access months[-1] - ERROR
    monthTextView.setText("" + month);
    i++;
}

当您到达最后一个或第一个索引时,最终值将是它的
-1
maxsize
,但当您单击相反的按钮返回时,条件仍然是通过,例如,当您已经在
-1
时,下一个按钮条件仍然通过,因为
-1
小于
月。size()
您的情况应该类似于i-1=0,而不是i当您到达最后一个或第一个索引时,最终值将是它的
-1
maxsize
,但当您单击相反的按钮返回时,条件仍然是通过,例如,当您已经在
-1
时,下一个按钮条件仍然通过,因为
-1
小于
month.size()
您的条件应该是i-1=0而不是i主要问题是您在更改
i
之前获得了值-也就是说,
i
指向下一个值-按照'm.antkowicz'编写的方法执行,并在获取
月份之前递增/递减
-还有一点注意:将
月份
添加到空字符串有点奇怪,请使用
…setText(month.toString())
主要问题是在更改
i
之前获取值-也就是说,
i
指向下一个值-按照“m.antkowicz”编写的操作,并在获取
月份之前递增/递减-还有一点需要注意的是:将
月份
添加到空字符串有点奇怪,请使用
…setText(month.toString())
如果i-1==0,那么他只做他自己的逻辑,然后设置i——同样的逻辑仍然适用,他仍然看到第一个月和最后一个月如果i-1==0,那么他只做他自己的逻辑,然后设置i——同样的逻辑仍然适用,他仍然看到第一个月和最后一个月——他会建议总是更新
i
,但是作为第一个操作如果在if语句中进行编辑,并更改绑定检查。否则,视图将需要点击两次才能正确更新基本上您是对的,但是问题是OP希望在访问最后/第一个元素后如何处理他的“列表”。如果它重复显示第一/最后一个项目,则不执行任何操作,转到最后/第一个元素,如carousel etca中的贪婪与@Michael——就像索引已经为零(prev按钮),什么也不做;或者已经在末尾(下一步),不执行任何操作;这还意味着,
i
始终指向当前实现的实际值,当您第一次单击next/prev时,将不会发生任何事情,假设用于填充文本视图的
i
的初始值(因为我们将重新填充
i
当前值的数据,然后更新
i
).想想看,使用该代码的奇怪行为-例如,
i==0
;按
next
看一月;按
next
看二月;按
prev
看三月???无论
next
还是
prev
我们都会在2月收到通知。我建议总是更新
i
会更干净,但随着时间的推移他在if语句中执行第一个操作,并更改绑定检查。否则,视图需要点击两次才能正确更新基本上你是对的,但问题是OP希望在访问最后/第一个元素后如何处理他的“列表”。如果它重复显示第一/最后一个项目,则不执行任何操作,转到如中所示的最后/第一个元素带@Michael的carousel etcagreed-就像索引已经为零(prev按钮),什么也不做;或者已经在末尾(下一步),不执行任何操作;这还意味着,
i
始终指向当前实现的实际值,当您第一次单击next/prev时,将不会发生任何事情,假设用于填充文本视图的
i
的初始值(因为我们将重新填充
i
当前值的数据,然后更新
i
).想想看,使用该代码的奇怪行为-例如,
i==0
;按
next
看一月;按
next
看二月;按
prev
看三月???不管
next
还是
prev
我们都会得到二月
if (i >= 0) {
    Month month = months.get(i);
    monthTextView.setText("" + month);
    i = (i > 0) ? (i - 1) : 0; // for example like this
}