【问题标题】:Reverse Order List in RecyclerView AlertDialogRecyclerView AlertDialog中的逆序列表
【发布时间】:2018-07-26 21:26:16
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: android arraylist android-recyclerview


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这解决了我的问题!另外,只有当position是列表的最后一个值时,我才需要放一个“if”来对列表进行排序,否则“for”不能按我的预期工作。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多