在将ArrayList用于RecyclerView适配器时遇到了一些麻烦。
我有一个带有AlertDialog的玩家列表,可以更改每个玩家的人数。
播放器已正确更新和排序,但是当我使用按钮更改数字时,播放器列表将以相反的顺序显示。
如果我进行调试,则“ i”值会正确更新,但是在AlertDialog中对于最后一个播放器启动之后,我并不确定我做错了什么。
一个例子可能是:
约翰(1),安(2),玛丽(3)
当我要求更改数字时,AlertDialog会按以下顺序显示:
玛丽·安·约翰
代码如下:
private void setOnClickButtons(){
Button segonaE = findViewById(R.id.se);
segonaE.setOnClickListener(v -> changeNumbers());
}
private void changeNumbers() {
for(int i=0;i<workList.size()-2;i++){
getNumber(i,workList.get(i).toString());
}
}
private void getNumber(final int position,final String name) {
final EditText number = new EditText(this);
new AlertDialog.Builder(this)
.setTitle("Numero de "+name)
.setMessage("Write new Number")
.setView(number)
.setPositiveButton("Escollir", (dialog, whichButton) -> {
String newNumber = number.getText().toString();
workList.get(position).setNumero(Integer.valueOf(newNumber));
workList.sort(Comparator.comparing(Player::getNumber));
adapter.notifyDataSetChanged();
})
.show();
}
预先感谢
答案 0 :(得分:1)
如果我正确理解了您的问题,则需要反转for循环以获取正确的顺序。
for(int i=workList.size()-3;i>=0;i--){
getNumber(i,workList.get(i).toString());
}