Android Firebase回收器适配器未显示数据
我习惯于使用firebase recycler adapter使用Android Firebase回收器适配器未显示数据,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,我习惯于使用firebase recycler adapter使用populateViewHolder,但作为onBindViewHolder是一种新的方法。我尝试了onBindViewHolder,但它没有显示任何内容。 我做错了什么 这是我的密码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.
populateViewHolder
,但作为onBindViewHolder
是一种新的方法。我尝试了onBindViewHolder
,但它没有显示任何内容。
我做错了什么
这是我的密码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users);
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
mUsersList = (RecyclerView) findViewById(R.id.usersList);
mUsersList.setHasFixedSize(true);
mUsersList.setLayoutManager(new LinearLayoutManager(this));}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(mDatabase, Users.class)
.build();
FirebaseRecyclerAdapter<Users, UsersViewHolder> adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@Override
public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.users_single_layout, parent, false);
return new UsersViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
holder.setName(model.getName());
}
};
mUsersList.setAdapter(adapter);
}
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setName(String name){
TextView userNames = (TextView) mView.findViewById(R.id.textView2);
userNames.setText(name);
}
}}
我的自定义布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/common_google_signin_btn_icon_dark_focused"
android:id="@+id/circleImageView2" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="89dp"
android:layout_marginStart="89dp"
android:layout_toEndOf="@+id/circleImageView2"
android:layout_toRightOf="@+id/circleImageView2"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/circleImageView2"
android:layout_alignLeft="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:text="TextView" />
</RelativeLayout>
我可以在firebase中查看您的表用户吗?将onCreateViewHolder和onBindViewHolder日志添加到日志中,查看它们是否调用。确保在firebase项目中设置读取规则。将read设置为true
您可以添加:
adapter.startListening();
之后:
mUsersList.setAdapter(adapter);
它应该是这样的:
mUsersList.setAdapter(adapter);
adapter.startListening();
欢迎来到
StackOverflow
,请提供@CodeNemesis late reply的可能副本,但您尝试过上面的链接吗?我看到了下面的图片,您需要使用implementation'com.firebaseui:firebaseui数据库:3.2.1'
,然后onBindViewHolder
将起作用,并且您还需要使用此功能,我尝试了日志记录,但没有调用它们。这里是我的用户在firebase@CodeNemesis这也发生在我身上,有解决方案吗?@ArmandoBarreda我在没有任何解决方案的情况下被困了3天,所以我做了一些我不感到自豪的事情,我降级了所有依赖项以匹配我的一个工作项目,然后升级了除firebase ui数据库之外的所有依赖项。这启用了populateViewHolder覆盖选项,我完成了它。@CodeNemesis你能给我发送项目吗?@ArmandoBarreda很抱歉,这不可能,但你可以看到我的依赖项。更改依赖项后唯一改变的是使用populateViewHOlder而不是onCreate和onBinder,因此您可以参考上面的代码。
mUsersList.setAdapter(adapter);
adapter.startListening();