从Firebase数据创建一个ArrayList [英] Make an ArrayList from Firebase Data

查看:115
本文介绍了从Firebase数据创建一个ArrayList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我已经遇到困难,试图了解如何检索用户的兴趣和将它添加到我的数组列表中。



以下是我的Firebase数据设置方式:



据我所知,我必须异步加载数据,但我我不知道该怎么去做。



这里是我尝试添加到ArrayList的代码:

  public class MainActivity extends AppCompatActivity {


private DatabaseReference eventDatabase;
private DatabaseReference usersDatabase;

private FirebaseAuth mAuth;
private String currentUserID;

private ArrayList< String> userInterests = new ArrayList< String>();

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

eventDatabase = FirebaseDatabase.getInstance()。getReference()。child(Event);
usersDatabase = FirebaseDatabase.getInstance()。getReference()。child(Users);

mAuth = FirebaseAuth.getInstance();

currentUserID = mAuth.getCurrentUser()。getUid();
$ b $ usersDatabase.child(currentUserID).child(interest)。addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){$ b $ ($)$ b $($)$($)$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ));
}
}
}

@Override
public void onCancelled(DatabaseError databaseError){

}
});

System.out.println(userInterests);

我想让ArrayList由用户的兴趣组成,如果它在数据库中是假的,不会被添加到列表中。例如:[竞争,文化,教育等]



当它在控​​制台返回列表时,我只看到一个空的列表 - []

解决方案

这就是你想要的。


$ b $ pre $ usersDatabase.child(currentUserID).child(interest)。addValueEventListener(new ValueEventListener(){
@覆盖
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){
boolean isInterested =(Boolean)postSnapshot.getValue();
if (isInterested){
userInterests.add(postSnapshot.getKey());
}
}


I have an ArrayList defined in my Android app for my MainActivity.

I've been running into difficulties trying to understand how to retrieve the interests of the user and add it to my array list.

Here's how my Firebase data is set up:

I understand that I must load the data asynchronously, but I'm confused as to how I should go about that.

here's my code for trying to add to the ArrayList:

public class MainActivity extends AppCompatActivity {


private DatabaseReference eventDatabase;
private DatabaseReference usersDatabase;

private FirebaseAuth mAuth;
private String currentUserID;

private ArrayList<String> userInterests = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    eventDatabase = FirebaseDatabase.getInstance().getReference().child("Event");
    usersDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

    mAuth = FirebaseAuth.getInstance();

    currentUserID = mAuth.getCurrentUser().getUid();

    usersDatabase.child(currentUserID).child("interests").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                boolean isInterested = (Boolean)postSnapshot.getValue();
                if (isInterested){
                    userInterests.add(postSnapshot.getKey());
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    System.out.println(userInterests);

I want the ArrayList to consist of the user's interests, if it is false in the database, it won't be added to the list. Example: [COMPETITION, CULTURE, EDUCATION...etc]

When it returns the list in the console, I just see an empty list -- "[]"

解决方案

This is what you want.

usersDatabase.child(currentUserID).child("interests").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
     for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
           boolean isInterested = (Boolean)postSnapshot.getValue();
        if (isInterested) {
            userInterests.add(postSnapshot.getKey());
        }
   }

这篇关于从Firebase数据创建一个ArrayList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆