2017-10-14 10 views
2

J'essaie de récupérer des données de ma base de données Firebase, mais mon écran ne montre rien. Je ne vois aucune erreur donc je ne sais pas pourquoi il ne se passe rien. Quelqu'un peut-il repérer des erreurs? J'ai suivi le guide FirebaseUI avec de l'aide d'un membre de stackoverflow. Les données devraient montrer la rue et l'utilisateur sur l'écranAndroid - RecyclerView ne fonctionne pas

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); 

    } 
} 

classe User:

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 et vérifier le contenu de l'adaptateur s'il existe des données ou non – nomag

+0

je vérifié si l'adaptateur était vide avec adapter.getItemCount et il se trouve qu'il est vide. Je ne comprends pas pourquoi il est vide – JDoe

+0

car KeyQuery et dataRef pointent vers différents nœuds Firebase. Les deux doivent pointer vers le même nœud parent. –

Répondre

2

Dans la version 3.0 de FirebaseUI, vous devez explicitement appelez startListening() & stopListening() sur l'adaptateur pour lui demander de démarrer/arrêter la récupération des données de la base de données.

Cycle de vie Adapter - dans les versions précédentes, les adaptateurs ont commencé à écouter immédiatement après instanciation et avait un appel cleanup() d'arrêter écoute. Dans 3.x, vous devez appeler explicitement startListening() et stopListening() ou transmettre un LifecycleOwner au générateur d'options.

Source: Upgrading to FirebaseUI 3.0