2017-10-14 87 views
2

我想从我的Firebase数据库检索数据,但我的屏幕没有显示任何内容。我没有看到任何错误,所以我不知道为什么没有发生。任何人都能发现任何错误?我通过一个stackoverflow成员的帮助来跟踪FirebaseUI指南。这些数据应显示在街上,在屏幕上,用户Android - RecyclerView不工作

Database

片段:

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

    } 
} 

用户等级:

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

调试和检查适配器的内容,如果有我检查适配器是否是空的,adapter.getItemCount任何数据或不 – nomag

+0

和原来它是空的。我不明白为什么它是空的 – JDoe

+0

这是因为keyQuery和dataRef指向不同的firebase节点。两者都应该指向同一个父节点。 –

回答

2

在FirebaseUI的3.0版本,你需要明确请在适配器上调用startListening() & stopListening()指示它启动/停止从数据库检索数据。

适配器生命周期 - 在以前的版本中的适配器就开始听 在实例立即有cleanup()呼吁停止 听。在3.x中,您必须明确地拨打startListening()stopListening()或将LifecycleOwner传递给选项生成器。

来源:Upgrading to FirebaseUI 3.0

相关问题