【发布时间】:2018-03-26 10:49:08
【问题描述】:
我正在尝试从我的 Firebase 数据库中检索数据,但我的屏幕没有显示任何内容。我没有看到任何错误,所以我不知道为什么什么也没发生。任何人都可以发现任何错误吗?在 stackoverflow 成员的帮助下,我遵循了 FirebaseUI 指南。数据应在屏幕上显示街道和用户
片段:
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;
}
}
【问题讨论】:
-
调试检查适配器内容是否有数据
-
我用 adapter.getItemCount 检查了适配器是否为空,结果发现它是空的。我不明白为什么它是空的
-
这是因为 keyQuery 和 dataRef 指向不同的 firebase 节点。两者都应该指向同一个父节点。
-
您应该尝试在
AsyncTask中实现您的数据库代码,因为它会大量填充主线程 -
brijesh kumar - 如果两者都指向地址节点,我可以获取用户名吗?
标签: android firebase firebase-realtime-database firebaseui