Listview не отображается и база данных Firebase
В приведенном ниже коде после сканирования каждого объекта в моей базе данных я могу без проблем проанализировать данные, а затем пытаюсь добавить их в виде строки в виде списка моего фрагмента. В конце появляется только "HELLO", и название моего мероприятия не добавляется в мой список. Есть идеи почему? Я не могу найти ошибку. Вся информация, которую я добавляю в мои ArrayList listItems, добавляется правильно, но она не обновляется в виде списка, поэтому я вижу только слово HELLO, которое я добавляю в начале.
public class PastEventFragment extends Fragment {
public PastEventFragment() {
// Required empty public constructor
}
private ListView lvpast;
private ArrayAdapter<String> adapter;
private ArrayList<String> listItems;
private FirebaseDatabase mFirebaseDatabse;
private DatabaseReference mReference;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_past_events, container, false);
lvpast = v.findViewById(R.id.listviewpast);
listItems = new ArrayList<String>();
listItems.add("HELLO");
mFirebaseDatabse = FirebaseDatabase.getInstance();
mReference = mFirebaseDatabse.getReference("Events");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int year, month, date, hour, minute;
Calendar calendar = Calendar.getInstance();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
year = ds.child("year").getValue(Integer.class);
month = ds.child("month").getValue(Integer.class);
date = ds.child("date").getValue(Integer.class);
hour = ds.child("hour").getValue(Integer.class);
minute = ds.child("minute").getValue(Integer.class);
//testing purposes.
Log.v("YEAR FROM DB", "" + year);
Log.v("CURRENT YEAR", "" + calendar.get(Calendar.YEAR));
Log.v("MONTH FROM DB", "" + (month - 1));
Log.v("CURRENT MONTH", "" + calendar.get(Calendar.MONTH));
String title = ds.child("title").getValue(String.class);
String toAdd = "Event Title: " + title;
listItems.add(toAdd);
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
mReference.addListenerForSingleValueEvent(eventListener);
adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, listItems);
lvpast.setAdapter(adapter);
return v;
}
}