我在为 RecyclerView 适配器使用 ArrayList 时遇到了一些麻烦。
我有一个带有 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();
}
提前致谢