RecyclerView AlertDialog中的冲销订单列表

时间:2018-07-26 21:26:16

标签: android arraylist recycler-adapter

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

预先感谢

1 个答案:

答案 0 :(得分:1)

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

for(int i=workList.size()-3;i>=0;i--){
    getNumber(i,workList.get(i).toString());
}