2016-12-13 8 views
1

私はこの1つのように機能しました:recyclerviewにアイテムを追加する - 間違った位置を

私はそれが残っている場合、選択した項目(それを複製)2位(現在の1から始まる)を追加したい
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です。今は、項目を間違った位置に挿入するだけです。どのようなアイデアが間違っている?

答えて

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

はそれが

+0

ありがとうございました! –

0

使用.SET()メソッドだけではなく、その後食事にそれらを追加して、項目を追加するための

を追加するホープポジションの位置になりましたgo notifyDatasetChanged()。もう一つの方法はnotifyItemRangeInserted()を使うことです。新しいアイテムをどのように追加していくのか、その数に応じて、それは価値があるかもしれません。

関連する問題