为了账号安全,请及时绑定邮箱和手机立即绑定

未在 Firebase 中创建字符串的 Arraylist

未在 Firebase 中创建字符串的 Arraylist

隔江千里 2022-06-15 10:56:15
我正在尝试让一个新用户Firebase拥有 4 个字段 1.username 2.posts 3.followers 4.following -->ArrayList以下是一个,ArrayList但最后一个字段根本没有在 Firebase 中创建。这是我得到的结果:创建新用户的代码:UserBean userBean = new UserBean(mUsername.toLowerCase(),0,0,new ArrayList<String>());mUserDatabase.push().setValue(userBean);我的用户豆:String username;int followers,post;ArrayList<String> following;public UserBean() {}public UserBean(String username, int followers, int post, ArrayList<String> following) {    this.username = username;    this.followers = followers;    this.post = post;    this.following = following;}public String getUsername() {    return username;}public void setUsername(String username) {    this.username = username;}public int getFollowers() {    return followers;}public void setFollowers(int followers) {    this.followers = followers;}public int getPost() {    return post;}public void setPost(int post) {    this.post = post;}public ArrayList<String> getFollowing() {    return following;}public void setFollowing(ArrayList<String> following) {    this.following = following;}我也尝试将数据添加到ArrayList反正,但数据没有被添加到Firebase. 这是我尝试过的: Query currentUserQuery = mUsersReference.orderByChild("username").equalTo(mFirebaseAuth.getCurrentUser().getDisplayName().toLowerCase()); Log.d(MainActivity.TAG,mFirebaseAuth.getCurrentUser().getDisplayName().toLowerCase());ArrayList<String> following = (ArrayList<String>) data.child("following").getValue();这行代码会抛出NullPointerException,但它应该已经在列表中添加了数据,因为你们说列表只是没有任何数据就不会显示。那它为什么会抛出NullPointerException?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

据我了解,如果其中没有元素,firebase 不会创建数组项。如果您在列表中添加一个元素,您将在 firebase 中看到它。



查看完整回答
反对 回复 2022-06-15
?
心有法竹

TA贡献1866条经验 获得超5个赞

所以显然,@Vinay Avasthi 是对的,Firebase 不会ArrayList在数据库中显示空值,因此如果您正在初始化对象并ArrayList在构造函数中传递一个空值,那么ArrayList不会出现Firebase进一步给您带来另一个问题的问题;将来,如果您想在列表中添加数据,则不能这样做,因为它为您提供了NullPointerException解决所有这些问题的方法,我必须做的是传递ArrayList一个空的String然后我可以List在中显示firebase并引用它容易地。


ArrayList<String> following = new ArrayList<>();

following.add("");

UserBean userBean = new UserBean(mUsername.toLowerCase(),0,0,following);

mUserDatabase.push().setValue(userBean);

还有一点需要注意,@Vinay Avasthi 也指出,您还必须将列表的值再次设置为新列表,否则您将在列表中添加数据,但数据不会在Firebase.


ArrayList<String> following = (ArrayList<String>) data.child("following").getValue();

following.add(username);

String key = data.getKey();                   

mUsersReference.child(key).child("following").setValue(following);

但是我仍然面临一个问题,那就是在每个列表中,你都会有一个String你没有用的空。

//img1.sycdn.imooc.com//62a94a800001ac3903030150.jpg

现在,我会String在向用户展示他们的followings. 但我认为firebase应该创造了空ArrayList



查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号