【发布时间】:2019-06-23 17:00:26
【问题描述】:
我正在尝试使用 Firebase 和 Android Studio 制作聊天应用程序。我正在使用 RecyclerView 来查看 Firebase 数据库中只有名字的所有用户,但每次都是空的。有人可以告诉我要做什么修改?
这就是我的数据库的样子。 ![1]https://imgur.com/a/U06syNe
我尝试了很多东西,但似乎没有任何效果。尝试了很多来自 github 的教程。
UsersActivity 类是 RecyclerView 和 FirebaseRecyclerAdapter 的位置
public class UsersActivity extends AppCompatActivity {
private RecyclerView userslist;
private DatabaseReference ref;
private List<Users> mUsers;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_users );
ref = FirebaseDatabase.getInstance ().getReference ().child ( "users" );
userslist = (RecyclerView) findViewById ( R.id.users_list );
userslist.setLayoutManager ( new LinearLayoutManager ( this ) );
}
@Override
protected void onStart () {
super.onStart ();
FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users> ()
.setQuery ( ref, Users.class )
.build ();
FirebaseRecyclerAdapter<Users, FindFriendViewHolder> adapter = new FirebaseRecyclerAdapter<Users, FindFriendViewHolder> ( options ) {
@Override
protected void onBindViewHolder (@NonNull FindFriendViewHolder findFriendViewHolder, int i, @NonNull Users users) {
findFriendViewHolder.userName.setText ( users.getName () );
}
@NonNull
@Override
public FindFriendViewHolder onCreateViewHolder (@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from ( parent.getContext () ).inflate ( R.layout.users_template, parent, false );
FindFriendViewHolder viewHolder = new FindFriendViewHolder ( view );
return viewHolder;
}
};
userslist.setAdapter ( adapter );
adapter.startListening ();
}
public static class FindFriendViewHolder extends RecyclerView.ViewHolder {
TextView userName;
ImageView profileImage;
public FindFriendViewHolder (@NonNull View itemView) {
super ( itemView );
userName = itemView.findViewById ( R.id.username1 );
profileImage = itemView.findViewById ( R.id.profilepicture );
}
}
}
这是我的用户模型
public class Users {
public String name;
public Users(){}
public Users(String name){
this.name=name;}
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
}
gradle 是这样的(我用的是 androidx)
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-firestore:19.0.2'
implementation 'com.google.firebase:firebase-storage:17.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'
implementation 'com.google.firebase:firebase-auth:17.0.0'
implementation 'com.google.firebase:firebase-database:17.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.13-beta-3'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.firebaseui:firebase-ui-database:5.0.0'
implementation 'com.android.support:multidex:1.0.3'
我希望从数据库中获取数据并存储在 RecyclerView 中以显示我的所有用户。
【问题讨论】:
-
您能否确认是否调用了 onBindViewHolder() 以及 users.getName () 是否没有空值?
-
是的。当我打开活动时,什么都没有出现,我的数据库中已经有 3 个用户。所有用户在数据库中都有他们的名字。
-
我试图从这个链接imgur.com/a/U06syNe打开你的数据库结构但没有显示
-
是的。不让我上传。我的结构是我有一个名为 users 的节点,下面是每个用户的主键,每个主键下面是名字和第二个名字。
-
您是否尝试将
Users类中的字段设为私有?请添加一个可以看到的屏幕截图,也请回复@AlexMamo
标签: android firebase firebase-realtime-database firebaseui