データの取得後にリストを更新しようとしていますが、試行しても何も起きず、古いデータが表示されます。私はデータを非同期に取得しようとしましたが、同じ問題が発生しました。 コードは次のとおりです。ファイアベースからデータを追加した後にListFragmentがリフレッシュされない
public class myFragment extends ListFragment{
private DatabaseReference database = FirebaseDatabase.getInstance().getReference();
ArrayAdapter<Event> adapter;
List<Event> eventsList = new ArrayList<Event>();
Event[] events = {
new Event(...), //Test data
new Event(...),
new Event(...)
};
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false); //Custom view
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new EventsAdapter(getActivity(), events);
setListAdapter(adapter);
database.child("Events").addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot s : dataSnapshot.getChildren()) {
Event event = s.getValue(Event.class);
eventsList.add(event);
//adapter.add(event); crashes the app for some reason
}
events = eventsList.toArray(new Event[eventsList.size()]);
adapter.notifyDataSetChanged();
}
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void onListItemClick(ListView l, View v, int position, long id) {...}
}
コードで何が間違っているかわかりません。これをどのように修正できますか?
「何らかの理由でアプリをクラッシュする」例外とスタックトレースを表示する必要があります。 –
@KuroMajutsu:pls、あなたの答えを質問に入れないでください。そのままにして、実際の答えにあなたの全体の答えを入れてください! –