未在 Firebase 中创建字符串的 Arraylist

我正在尝试让一个新用户Firebase拥有 4 个字段 1.username 2.posts 3.followers 4.following -->ArrayList

以下是一个,ArrayList但最后一个字段根本没有在 Firebase 中创建。

这是我得到的结果:

http://img1.mukewang.com/62a94a620001f66e05010172.jpg

创建新用户的代码:


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?


隔江千里
浏览 133回答 2
2回答

精慕HU

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

心有法竹

所以显然,@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();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mUsersReference.child(key).child("following").setValue(following);但是我仍然面临一个问题,那就是在每个列表中,你都会有一个String你没有用的空。现在,我会String在向用户展示他们的followings.&nbsp;但我认为firebase应该创造了空ArrayList。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java