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

时间:2016-12-13 22:55:41

标签: android android-recyclerview

我有这样的功能:

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,如果它是正确对象,真爱。现在,它只是将项目插入错误的位置。任何想法有什么不对?

2 个答案:

答案 0 :(得分:0)

也许尝试以下方法:

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位置。

希望有所帮助

答案 1 :(得分:0)

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

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