2016-09-01 18 views
0

firebaseデータベースからデータを読み込んだ後、RecyclerView添付データを更新しようとしています。 notifyDataSetChanged()は機能していないようです。notifyDataSetChangedがRecyclerView + Firebaseリアルタイムデータベースで動作していません

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    // use a linear layout manager 
    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); 
    recyclerView.setLayoutManager(layoutManager); 

    adapter = new StationListAdapter(stations); 
    recyclerView.setAdapter(adapter); 

    FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference stationsRef = database.getReference("stations"); 
    stationsRef.equalTo("Berlin").orderByChild("city").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      stations = (ArrayList<Map<String, String>>) dataSnapshot.getValue(); 
      Log.d(TAG, "Value is: " + stations.toString()); 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
} 

リストには何も表示されていませんが、ログには利用可能なアイテムがあります。私のアダプタに渡す前stationsに項目を追加する場合、それらが正しく表示されます。

HashMap<String, String> works = new HashMap<String, String>(); 
works.put("name", "berlin"); 
stations.add(works); 
adapter = new StationListAdapter(stations); 

私もUIThread、同じ結果にnotifyDataSetChanged()を実行しようとしました。私はhttps://github.com/firebase/FirebaseUI-Androidを使いたくありません。これを修正する方法はありますか?私はRecyclerViewを数回使用しており、notifyDataSetChanged()は毎回うまく働いています。あなたは、アダプタクラスのステーションを更新し、ちょうどやや

public void setStations(<Map<String, String>> stations){ 
this.stations=stations 
} 

このようなステーションを設定する機能notifydataset変更呼び出し、前その後、ステーションの値を設定し、アダプタに関数を書くdidnot

答えて

0

を働くだろう問題は、この行だった

stations.addAll((ArrayList<Map<String, String>>) dataSnapshot.getValue()); 
0

それがされている必要があります

stations = (ArrayList<Map<String, String>>) dataSnapshot.getValue(); 

+0

ステーションはアダプタで参照されるため、手動で更新する必要はありません。 – Chris

+0

データがあなたの視点に影響し、アダプタのデータを変更する必要があります。このデータは、データを更新するたびに通知する必要があり、notifydatasetchangeが機能します –

関連する問題