Firebase извлекает данные в несколько текстовых представлений и списков с помощью специального адаптера, не показывая ошибок и не отображая данные - PullRequest
0 голосов
/ 29 января 2019

Я создал пользовательский listview и пользовательский адаптер.Я хочу загрузить данные из firebase, но данные не отображаются.и я получаю сообщение об ошибке

EventInfoAdapter eventInfoAdapter = new EventInfoAdapter(this, list);

Вот код: Event.java

final DatabaseReference ref = 
FirebaseDatabase.getInstance().getReference("Hospital");

list = new ArrayList<>();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
     for (DataSnapshot ds : dataSnapshot.getChildren()) {
         String key = ds.getKey();
         showdata(key);
       }
    }
private  void showdata (String key) {
   ref.child(key).child("event").addValueEventListener(new 
   ValueEventListener() {
  @Override

   public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot child : dataSnapshot.getChildren()) {

              Event event = child.getValue(Event.class);
              list.add(event);

 }

 EventInfoAdapter eventInfoAdapter = new EventInfoAdapter(this, list);

 listView.setAdapter(eventInfoAdapter);
 }
 @Override
 public void onCancelled(@NonNull DatabaseError databaseError) {

         }
      });
   }

и это мой адаптер:

public class EventInfoAdapter extends ArrayAdapter<Event> {
private Activity context;
private List<Event> eventList;

public EventInfoAdapter(Activity context, List<Event>evenList){
    super(context, R.layout.list_item,evenList);
    this.context = context;
    this.eventList =evenList;
      }

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent){
    LayoutInflater inflater = context.getLayoutInflater();
    View listView = inflater.inflate(R.layout.list_item, null, true);

    TextView namaevent = listView.findViewById(R.id.eventname);
    TextView dt = listView.findViewById(R.id.date);
    TextView tm = listView.findViewById(R.id.time);
    TextView ln = listView.findViewById(R.id.location);

    Event event = eventList.get(position);
    namaevent.setText(event.getEvent());
    dt.setText(event.getDate());
    tm.setText(event.getTime());
    ln.setText(event.getLocation());
    return listView;

}

1 Ответ

0 голосов
/ 29 января 2019
private EventInfoAdapter eventInfoAdapter;    
final DatabaseReference ref = 
    FirebaseDatabase.getInstance().getReference("Hospital");


    list = new ArrayList<>();
eventInfoAdapter = new EventInfoAdapter(this, list);
    ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
         for (DataSnapshot ds : dataSnapshot.getChildren()) {
             String key = ds.getKey();
             showdata(key);
           }
        }
    private  void showdata (String key) {
       ref.child(key).child("event").addValueEventListener(new 
       ValueEventListener() {
      @Override

       public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot child : dataSnapshot.getChildren()) {

                  Event event = child.getValue(Event.class);
                  list.add(event);

     }

     listView. notifyDataSetChanged();//updated this one

     listView.setAdapter(eventInfoAdapter);
     }
     @Override
     public void onCancelled(@NonNull DatabaseError databaseError) {

             }
          });
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...