Edit: Wenn jemand das gleiche Problem in der Zukunft hat, war es eine ziemlich einfache Lösung. Ich habe ClearView (RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) verwendet, um zu verarbeiten, wenn das gesamte Ziehen beendet wurde und vergessen hatte, es als Super-Methode zu bezeichnen. Deshalb wurde es nicht richtig aktualisiert.Hinzugefügtes Element wird nicht in RecyclerView nach dem Löschen eines anderen mit Swipe
Original Frage:
Hier ist der gesamte Code: https://github.com/vustav/Ppaaiinntt/tree/master/app/src/main/java/com/decent/rvtest
Alles funktioniert gut, außer wenn ich ein Element direkt nach dem Löschen eines weiteren hinzuzufügen. Es existiert jedoch. Wenn ich ein anderes hinzufüge, gibt es einen richtig bemessenen Abstand zwischen der alten Liste und dem neuen Element. Ich benutze eine Zeichenkette, wo sie ihre Namen vor einem Druck hinzufügen und es dort zeigt, und wenn ich ziehe, um Positionen der Elemente zu ändern, wird es richtig angezeigt.
Mein Ruf erlaubt mir nicht, Bilder zu veröffentlichen, damit ein Imgur-Album zu tun hat: http://imgur.com/a/bmb17
Auf dem ersten Bild gibt es drei Elemente und die Schnur am Boden gedruckt.
Das zweite Bild ist nach dem Swipe. Beachten Sie, dass die Zeichenfolge aktualisiert wird.
Die dritte ist nach dem Hinzufügen einer anderen "111". Die Zeichenfolge ist korrekt, wird jedoch nicht in der Ansicht angezeigt.
Der vierte ist nach dem Hinzufügen eines anderen. Die Zeichenfolge ist immer noch korrekt und das neue Element wird in der Ansicht angezeigt.
Das letzte Bild wird nach dem Ziehen verschoben, um die Position der letzten beiden Elemente zu ändern. Jetzt ist wieder alles in Ordnung.
Dies sind die relevanten Methoden (glaube ich):
protected void add(PictureElement pe){
chain.add(pe);
notifyItemInserted(chain.size()-1);
}
public void remove(int position) {
chain.remove(position);
notifyItemRemoved(position);
}
protected void swap(int from, int to){
chain.swap(from, to);
notifyItemMoved(from, to);
}
Edit: onBindViewHolder, getItemCount und die ViewHolder:
@Override
public int getItemCount() {
return chain.size();
}
@Override
public void onBindViewHolder(PEViewHolder PEViewHolder, int i) {
PictureElement pe = chain.get(i);
PEViewHolder.name.setText(pe.getName());
}
protected static class PEViewHolder extends RecyclerView.ViewHolder {
protected TextView name;
public PEViewHolder(View v) {
super(v);
name = (TextView) v.findViewById(R.id.txtName);
}
}
posten Sie Ihre Adapter-Code, spezifisch binden Methode und getCount – marmor