Dies ist ein wirklich bizarrer Bug, dem ich begegne.Snackbar verhindert, dass Recyclerview seine Ansicht aktualisiert?
Wenn ich meinen Code wie folgt (das Hinzufügen eines neuen Element in mein recyclerview) laufen, es funktioniert und Updates fein:
mListOfData.add(someNewItem);
mRecyclerViewAdapter = new RecyclerViewAdapter(this, mListOfData);
mRecyclerViewAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(mRecyclerViewAdapter);
Aber wenn ich zeigen eine Snackbar erklärt dem Benutzer, ein Element hinzugefügt wurde, plötzlich die Liste nicht aktualisiert in Echtzeit, wenn ich die Aktivität (Drehen des Bildschirms usw.) neu:
View view = findViewById(R.id.primary_coordinator_layout);
mListOfData.add(someNewItem);
mRecyclerViewAdapter = new RecyclerViewAdapter(this, mListOfData);
mRecyclerViewAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(mRecyclerViewAdapter);
Snackbar.make(view, "Item added!", Snackbar.LENGTH_SHORT).show();
Gibt es Gründe, warum dies auch sein mag oder wie man verhindern, dass es die Blockierung der visuellen Update? Hier
ist die XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/primary_coordinator_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
<TextView
android:id="@+id/emptytext"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:text="@string/no_items_in_recyclerview"
android:layout_gravity="center_horizontal"
android:gravity="center"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_input_add"/>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
Das gleiche Problem leider –
können Sie versuchen, die aktualisierte Antwort? –
Ich habe den Grund herausgefunden, hatte nichts mit der Snackbar zu tun (hatte damit zu tun, dass die Sichtbarkeit der leeren Ansicht nicht richtig eingestellt war), aber ich gebe ein Häkchen/eine Empfehlung für die Zeit und Mühe –