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

Android 在recyclerview中添加项目-位置错误,android,android-recyclerview,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); } 我想添加一个选中的项目(复制它)+

我有一个这样的函数:

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);
    }
}
根据:

通知任何已登记的观察员,该位置所反映的项目是新插入的。以前位于位置的项目现在位于位置+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);
    }
}
根据:

通知任何已登记的观察员,该位置所反映的项目是新插入的。以前位于位置的项目现在位于位置+1

希望它能帮助您使用.set()方法而不是add

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

使用.set()方法而不是add

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