簡體   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