Listview не отображается и база данных Firebase - PullRequest
0 голосов
/ 27 января 2019

в приведенном ниже коде после того, как я проверю каждый объект в моей базе данных, я могу без проблем проанализировать данные, а затем пытаюсь добавить их в виде строки в списке моего фрагмента.В конце появляется только «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;
}

}

...