0

これは私が遭遇している本当に奇妙なバグです。Recyclerviewがそのビューを更新しないようにするSnackbar?

私は(私のrecyclerviewに新しい項目を追加する)このように私のコードを実行した場合、それは正常に動作し、アップデート:

mListOfData.add(someNewItem); 
mRecyclerViewAdapter = new RecyclerViewAdapter(this, mListOfData); 
mRecyclerViewAdapter.notifyDataSetChanged(); 
mRecyclerView.setAdapter(mRecyclerViewAdapter); 

しかし、私は、ユーザーに伝えるスナックバーを表示する場合はアイテムが突然、追加されました私は(画面の回転など)の活動を再作成しない限り、リストがリアルタイムで更新されません。

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(); 

これがあってもよいし、視覚的な更新をブロックするからそれを防ぐためにどのように、なぜ任意の理由は?ここで

は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> 

答えて

1

はその後snackbarを却下するようにしてください:

final RecyclerViewAdapter mRecyclerViewAdapter2 = new RecyclerViewAdapter(this, mListOfData); 


//create local snackbar 
final Snackbar snackBar = Snackbar.make(view, "Item added!", Snackbar.LENGTH_SHORT); 

snackBar.setAction("Blah blah", new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mRecyclerView.setAdapter(mRecyclerViewAdapter2); 
     mRecyclerViewAdapter2.notifyDataSetChanged(); 
     snackBar.dismiss(); 
    } 
}); 
snackBar.show(); 
+0

同じ問題残念ながら –

+0

あなたが更新の答えを試すことはできますか? –

+0

私はその理由を知り、Snackbarとは関係がありません(正しく設定されていないemptyviewの可視性と関係がある)が、私は時間と労力のためにチェックマーク/ upvoteを与えます –

関連する問題