Android добавить / заменить элементы в RecyclerView

Я знаю, что на эту тему уже есть много тем, но ни одно из данных решений не помогло мне. Я пытаюсь добавить или обновить элементRecyclerView, Вот мой код до сих пор:

Основная деятельность

private MyListItemAdapter mAdapter;
private RecyclerView recyclerView;

// called on activity create
private void init() {
    // initialize activity, load items, etc ...
    mAdapter = new MyListItemAdapter(this, items);
    recyclerView.setAdapter(mAdapter);
}

// called when I want to replace an item
private void updateItem(final Item newItem, final int pos) {
    mAdapter.replaceItem(newItem, pos);
}

MyListItemAdapter

public class MyListItemAdapter extends RecyclerView.Adapter<MyListItemAdapter.MyListItemViewHolder> {

    private List<Item> mItems;

    public void replaceItem(final Item newItem, final int pos) {
        mItems.remove(position);
        mItems.add(position, newItem);

        notifyItemChanged(position);
        notifyDataSetChanged();
    }    
}

Я пытался внести эти изменения изMainActivity также, но в каждом случае, когда я пытался, мой список не обновляется. Единственный способ, которым это работало, было, когда я переустанавливал адаптер в recyclerView:

mAdapter.notifyDataSetChanged();
recyclerView.setAdapter(mAdapter);

что, очевидно, плохая идея. (кроме плохих побочных эффектов даже не будет работать, когда я использую ленивую загрузку в своих списках).

Итак, мой вопрос, как я могу сделатьnotifyDataSetChanged() работать должным образом?

редактировать

Я нашел решение для замены предметов. ПослеmAdapter.replaceItem(newItem, pos); Мне пришлось позвонитьrecyclerView.removeViewAt(position);

Это работает для замены элемента, но не решает мою проблему, когда я хочу добавить элементы (например, отложенная загрузка) в свой список

edit2

Я нашел рабочее решение для добавления предметов

адаптер:

public void addItem(final Item newItem) {
    mItems.add(newItem);
    notifyDataSetChanged();
}

Деятельность:

private void addItem(final Item newItem) {
    mAdapter.addItem(newItem);
    recyclerView.removeViewAt(0); // without this line nothing happens
}

По некоторым причинам это работает (также: это не удаляет представление в позиции 0), но я уверен, что это не правильный способ добавить элементы в recyclerView

Ответы на вопрос(2)

Ваш ответ на вопрос