文字列のArrayListのはfirebaseで作成されていません

サーガルBalyan:

私は、新しいユーザーを作成しようとしていますFirebase> - 1.usernameは4.following 3.followersを2.posts 4つのフィールドを持ちますArrayList

どこ次の通りであるArrayListが、最後のフィールドは全くFirebaseに作成されません。

ここで私は取得しています結果は次のとおりです。 結果

新しいユーザーを作成するためのコード:

UserBean userBean = new UserBean(mUsername.toLowerCase(),0,0,new ArrayList<String>());
mUserDatabase.push().setValue(userBean);

私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());


currentUserQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            for(DataSnapshot data: dataSnapshot.getChildren()){
                                ArrayList<String> following = (ArrayList<String>) data.child("following").getValue();
                                following.add(username);
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

ArrayList<String> following = (ArrayList<String>) data.child("following").getValue();このコード行はスローNullPointerExceptionしかし、あなたたちはリストだけで任意のデータなしで表示されませんと言っているように、リスト内のデータを追加している必要があります。そして、なぜそれが投げるんNullPointerException

サーガルBalyan:

だから、どうやら、@Vinay AvasthiはFirebaseが空を示していない、右であるArrayList、あなたのオブジェクトを初期化し、空を渡しているそうだとすれば、データベースにArrayListあなたのコンストラクタで、その後ArrayListに表示されませんFirebaseそれはさらにあなたに1つの以上の問題ことを示します。あなたは、リスト内のデータを追加したい場合は将来的には、あなたはそれがあなたに与えられるようにすることができませんNullPointerExceptionので、私がしなければならなかった何これらの問題は合格であるすべてに取り組むためにArrayList、空には、Stringその後、私はそれを示すことができるListfirebaseして、それを参照してください。簡単に。

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あなたは何の用途を持っていないいるために。

ここでは、画像の説明を入力します。

今のところ、私はちょうど空を無視しString、そのユーザーを示しながらfollowingsしかし、私が思うにfirebase、空を作成しておく必要がありArrayList

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=191147&siteId=1