我有一个程序,如果玩家连续三次输入“命中”,则该玩家又会获得三掷。如果他们错过了三分之一的掷球,则是他们完成第三次掷球后的下一个回合。
播放器转弯在RecylerView中排序。
用户可以撤消其先前的操作,从而可以正确调整其他统计信息。
我遇到的情况是,如果一名球员在缺席的情况下完成了三局比赛,则继续前进到下一名球员,而没有下一名球员投掷,则用户决定撤消此操作,因此程序将最后一行推到顶部RecylerView的
用户在回合之前撤消所有先前的掷出。我正在测试连续三击,+ 1击+两击。这很好。当此玩家的属性减少到0时,就会出现问题。排在下一位的玩家出现在顶部,但是当我尝试删除他们的统计信息时,它正在将另一位玩家移到顶部。我已经尝试解决了几个小时,并确定问题出在if语句中。
这是GIF格式中的问题:
我需要这个if语句,因为您可以看到gif来删除撤消操作开始时移回顶部的第一个玩家。我尝试将boolean
放在代码中的不同位置,说“ recyler视图仅已调整-请勿触摸”
问题出在这里:
else if (!accessPlayerHistoryThreeInARow.get(accessPlayerHistoryThreeInARow.size() - 1) && Integer.parseInt(amountThrown.get(0)) % 3 == 0 && !accessPlayerHistoryThreeInARow.isEmpty()) {
previousAmountThrown = Integer.parseInt(amountThrown.get(amountThrown.size() - 1));
amountThrown.set(amountThrown.size() - 1, String.valueOf(previousAmountThrown - 1));
movePlayersInAdapter(apt_confirmedPlayers.size() - 1, 0); //Move to last element in adapter
playerTurn = lastPlayerTurn;// AMOUNTTHROWN FOR P2 SHOWING AS MINUS 1 HERE IN INSPECTOR
adjustListsToMatchTheAdapter(false);
if(deleteTheHit) {
amountHitThisRound--;
}
adapter.notifyItemChanged(1); //Changes the items being moved to the correct color hides dart image
if(!accessPlayerHistoryThreeInARow.isEmpty()) {
accessPlayerHistoryThreeInARow.remove(accessPlayerHistoryThreeInARow.size() -1);
listOfThreeInARow.get(playerTurn).clear();
listOfThreeInARow.get(playerTurn).addAll(accessPlayerHistoryThreeInARow);
} else {
listOfThreeInARow.get(playerTurn).clear();
}
我希望程序在删除第一个玩家统计信息时到达的代码。这是在else语句中遵循以上代码:
else {
Log.d("Result is empty", String.valueOf(!accessPlayerHistoryThreeInARow.isEmpty()));
Log.d("value should be false", String.valueOf(accessPlayerHistoryThreeInARow.get(accessPlayerHistoryThreeInARow.size() - 1)));
Log.d("value should be true", String.valueOf(Integer.parseInt(amountThrown.get(0)) % 3));
if(deleteTheHit) {
previousAmountHit = Integer.parseInt(amountHit.get(0));
numToHit.set(0, String.valueOf(previousAmountHit));
amountHit.set(0, String.valueOf(previousAmountHit - 1));
amountHitThisRound--;
}
previousAmountThrown = Integer.parseInt(amountThrown.get(0));
amountThrown.set(0, String.valueOf(previousAmountThrown - 1));
if(!accessPlayerHistoryThreeInARow.isEmpty()) {
accessPlayerHistoryThreeInARow.remove(accessPlayerHistoryThreeInARow.size() -1);
listOfThreeInARow.get(playerTurn).clear();
listOfThreeInARow.get(playerTurn).addAll(accessPlayerHistoryThreeInARow);
} else {
listOfThreeInARow.get(playerTurn).clear();
}
如果对于SO来说这是一个太宽泛的问题,请向我指出更合适的地方