0

我在为 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();
}

提前致谢

4

1 回答 1

1

如果我正确理解您的问题,您需要反转您的 for 循环以获得正确的顺序。

for(int i=workList.size()-3;i>=0;i--){
    getNumber(i,workList.get(i).toString());
}
于 2018-07-26T21:57:04.290 回答