当我从recylerview中删除一个对象时,有时getItemViewType(int position)中的位置为-1

时间:2016-08-18 23:47:43

标签: android android-recyclerview

删除方法:

public CustomObject remove(int adapterPos) {
    CustomObject customObject = customObjects.remove(adapterPos); //arraylist of custom objects
    notifyItemRemoved(adapterPos);
    return customObject;
}

然后getItemViewType(int position)内的位置是-1而不是有效位置。

如果我将notifyItemRemoved(adapterPos);更改为notifyDataSetChanged();,问题就不会出现

此外,它有时也有效。当它工作时,删除正确的项目。

1 个答案:

答案 0 :(得分:0)

我目前没有在我面前打开Android Studio,但-1通常是无效的默认值。如果您从RecyclerView.Adapter中删除该项目,然后尝试获取该视图的类型,则应指示该项目无效。当您致电notifyDataSetChanged()时,它会让适配器知道数据已更改且应该更新,这就是您不再看到-1的原因。

老实说,我不担心这个返回值,如果你要移除一个项目,你可能不应该得到它的viewtype。