2017-10-14 1 views
2

Ich versuche, Daten aus meiner Firebase-Datenbank abzurufen, aber mein Bildschirm zeigt nichts an. Ich sehe keine Fehler, deshalb weiß ich nicht, warum nichts passiert. Kann jemand Fehler entdecken? Ich folgte dem FirebaseUI Guide mit ein wenig Hilfe von einem Stackoverflow Mitglied. Die Daten sollten auf die Straße zeigen und den Benutzer auf dem BildschirmAndroid - RecyclerView funktioniert nicht

Database

Fragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_stopandmap, container, false); 

    Query keyQuery = FirebaseDatabase.getInstance().getReference("/Addresses/Street 10/users"); 
    DatabaseReference dataRef = FirebaseDatabase.getInstance().getReference("/User"); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    FirebaseRecyclerOptions<User> options = new FirebaseRecyclerOptions.Builder<User>() 
      .setIndexedQuery(keyQuery, dataRef, User.class) 
      .build(); 

    FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<User, BetViewHolder>(options) { 
     @Override 
     public BetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.item_row, parent, false); 

      return new BetViewHolder(view); 
     } 

     @Override 
     protected void onBindViewHolder(BetViewHolder holder, int position, User model) { 
      holder.setUserName(model.getUsername()); 
     } 


    }; 

    recyclerView.setAdapter(adapter); 

    return rootView; 


} 


public static class BetViewHolder extends RecyclerView.ViewHolder { 

    TextView tw; 

    public BetViewHolder(View itemView) { 
     super(itemView); 

     tw = (TextView) itemView.findViewById(R.id.usersTextview); 
    } 

    public void setUserName(String username) { 
     tw.setText("Hej" + username); 
     Log.e("Activity", "In Vehicle " + username); 

    } 
} 

Benutzerklasse:

public class User { 
    private String username; 
    private String usertype; 

    public User() { 
    } 

    public String getUsername() { 
     return this.username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getUsertype() { 
     return usertype; 
    } 

    public void setUsertype(String usertype) { 
     this.usertype = usertype; 
    } 
} 
+0

Debug und Adapter Inhalte überprüfen, ob es irgendwelche Daten oder nicht – nomag

+0

ich geprüft, ob der Adapter mit adapter.getItemCount leer war und es stellt sich heraus, es ist leer. Ich verstehe nicht, warum es leer – JDoe

+0

ist, weil keyQuery und dataRef auf verschiedene Firebase-Knoten zeigt. Beide sollten auf denselben übergeordneten Knoten zeigen. –

Antwort

2

In der Version 3.0 von FirebaseUI, müssen Sie explizit Rufen Sie startListening() & stopListening() auf dem Adapter an, um es zu veranlassen, Daten aus der Datenbank abzurufen oder zu stoppen.

Adapter Lifecycle - in früheren Versionen begannen die Adapter sofort bei der Instanziierung hören und hatten einen cleanup() Anruf Zuhören zu stoppen. In 3.x müssen Sie explizit startListening() und stopListening() aufrufen oder eine LifecycleOwner an den Optionen-Generator übergeben.

Quelle: Upgrading to FirebaseUI 3.0

Verwandte Themen