Android RecyclerView Adapter: notifyItemInserted und notifyItemMoved bei Index 0 funktionieren nicht

Ich habe einen RecyclerView mit einem horizontalen linearen Layout-Manager, der folgendermaßen deklariert ist:

RecyclerView graph = (RecyclerView) findViewById(R.id.graph);

RecyclerView.LayoutManager classManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
graph.setLayoutManager(classManager);
graph.addItemDecoration(new ComponentDecorator(this)); //Just sets a margin around each item

Ich habe eine Methode, die eine Platzhalteransicht in die RecyclerView einfügt:

private void insertPlaceholder(int index) {
    int placeholderIndex = getIndexOfPlaceholder(); //returns index of existing placeholder, -1 if none

    //No need to do anything
    if(placeholderIndex == index)
        return;

    if(placeholderIndex == -1) {
        ClassGraphItem placeholder = new ClassGraphItem();
        placeholder.setType(ClassGraphItem.PLACEHOLDER);

        mItems.add(index, placeholder);
        Print.log("notify item inserted at index", index);
        notifyItemInserted(index);
    }
    else {
        ClassGraphItem placeholder = mItems.get(placeholderIndex);
        mItems.remove(placeholderIndex);
        mItems.add(index, placeholder);

        notifyItemMoved(placeholderIndex, index);
    }
}

Der Platzhalter ist nur eine unsichtbare Ansicht, die eine Raumöffnung zwischen zwei vorhandenen Ansichten simuliert:

private class PlaceholderViewHolder extends RecyclerView.ViewHolder {

    public PlaceholderViewHolder(View itemView) {
        super(itemView);

        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(mComponentWidth, 1);
        itemView.setLayoutParams(params);

        itemView.setVisibility(View.INVISIBLE);
    }

}

Wenn der eingefügte Index> 0 ist, funktioniert es einwandfrei. Bei Index 0 funktioniert es jedoch nicht, entweder einen Platzhalter einzufügen oder einen vorhandenen Platzhalter in den Index 0 zu verschieben. Insbesondere animiert RecyclerView nicht, das neue Element anzuzeigen, das bei Index 0 eingefügt wurde. Wenn ich @ verwendet hanotifyDataSetChanged() es funktioniert. Aber das animiert nicht und ist nicht der Effekt, den ich suche. Dies scheint mir ein Fehler zu sein, aber ich wollte sicherstellen, dass es nichts anderes gibt, das dieses Problem verursacht.

Ich bin auf der neuesten Version der recyclerview-Unterstützungsbibliothek (24.2.1). Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage