繁体   English   中英

在recyclerview中添加项目 - 错误的位置

[英]Adding item in recyclerview - wrong position

我有一个像这样的功能:

private void addItem(final int position, Meals newMeal){
    if(isLeft(position)){
        Meals.add(position+2, newMeal);
    }
    else{
        Meals.add(position+1, newMeal);
    }
    notifyItemInserted(position);
}

我想要添加一个选定项目(复制它)+2个位置(从当前一个开始),如果它是左项(我有两列)或+1,如果它是正确的。 现在,它只是将项目插入错误的位置。 有什么想法有什么不对吗?

也许尝试以下方法:

private void addItem(final int position, Meals newMeal){
    if(isLeft(position)){
        Meals.add(position+2, newMeal);
        notifyItemInserted(position+2);

    }
    else{
        Meals.add(position+1, newMeal);
        notifyItemInserted(position+1);
    }
}

根据RecyclerView.Adapter /#notifyItemInserted

通知任何注册观察员新插入的位置反映的项目。 先前在位置的项目现在位于+ 1的位置。

希望能帮助到你

使用.set()方法而不是添加

要添加项目,只需将它们附加到Meal,然后转到notifyDatasetChanged()。 另一种方法是使用notifyItemRangeInserted()。 根据您添加新项目的方式以及新项目的数量,这可能是值得的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM