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
ステーションはアダプタで参照されるため、手動で更新する必要はありません。 – Chris
データがあなたの視点に影響し、アダプタのデータを変更する必要があります。このデータは、データを更新するたびに通知する必要があり、notifydatasetchangeが機能します –