Ich habe eine RecyclerView
in der Elemente sind LinearLayout
mit mehreren TextViews
als Kinder. Abhängig von einigen Regeln (dies wird in onBindViewHolder
entschieden), kann die TextViews
versteckt (Sichtbarkeit GONE) oder angezeigt werden.RecyclerView mit Elementen, die ihre Kinder verstecken/anzeigen
Mein Problem ist, dass, wenn ich zum Beispiel habe 3 Punkte (A, B und C) in den RecyclerView
mit der gleichen Anzahl von sichtbaren TextViews
und A oben auf der Liste steht, B in der Mitte und C an der Unterseite Wenn B zum Beispiel mehr TextViews
als zuvor zeigen muss, überlappt sich dieser Punkt (B) während eines kurzen Zeitraums mit C, da er größer geworden ist und die neuen sichtbaren TextViews
aufnehmen muss, die zuvor mit Sichtbarkeit GELÖSCHT waren.
Visuelle Darstellung des Problems:
Gewünschte Situation
Aktuelle und unerwünschte Situation
Nach ein wenig passt die RecyclerView
das Element korrekt.
Wie kann ich dies vermeiden?
EDIT:
In einer der Kommentare vorgeschlagen, dass ich vielleicht animieren und transformiert die Ansichten selbst. Ist das notwendig oder gibt es einen anderen Weg? Wenn ja, wie kann ich die Ansichten animieren und transformieren?
EDIT 2:
Versuchte diese Antwort: Animating items, aber die Probleme weiterhin bestehen. Es gibt eine sichtbare Verzögerung bis die RecyclerView
Updates.
EDIT 3:
ich diese Klasse bin mit (RecyclerViewCursorAdapter) als Basis für den Adapter, der die RecyclerView
auffüllt. Aditionally, ich bin dies, dass in onResume
ist
@Override
public void onResume()
{
super.onResume();
if(getActivity().getSupportLoaderManager().getLoader(R.id.myLoaderId) == null)
{
getActivity().getSupportLoaderManager().initLoader(R.id.myLoaderId, null, this);
}
else
{
getActivity().getSupportLoaderManager().restartLoader(R.id.myLoaderId, null, this);
}
}
Versuchen Sie, 'TextViews'' INVISIBLE' anstelle von 'GONE' zu erstellen. – sonictt1
Können Sie Ihren Code veröffentlichen, der anzeigt, was vor sich geht? Wenn sich die Daten ändern, sollten Sie einfach recyclerView.getAdapter() aufrufen können. NotifyDataSetChanged(); und es sollte die recyclerView korrekt neu zeichnen. – LNI
@ LNI Ich mache das, aber wie gesagt, das Problem entsteht während einer kurzen Zeitspanne (ich denke, während die "RecyclerView" Updates), dann wird es richtig gerendert. – OneEyeQuestion