私は、新しいユーザーを作成しようとしています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
?
だから、どうやら、@Vinay AvasthiはFirebaseが空を示していない、右であるArrayList
、あなたのオブジェクトを初期化し、空を渡しているそうだとすれば、データベースにArrayList
あなたのコンストラクタで、その後ArrayList
に表示されませんFirebase
それはさらにあなたに1つの以上の問題ことを示します。あなたは、リスト内のデータを追加したい場合は将来的には、あなたはそれがあなたに与えられるようにすることができません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
あなたは何の用途を持っていないいるために。
今のところ、私はちょうど空を無視しString
、そのユーザーを示しながらfollowings
。しかし、私が思うにfirebase
、空を作成しておく必要がありArrayList
。