从Firebase OnChange方法中获取数据

时间:2016-12-10 16:44:48

标签: android firebase android-asynctask firebase-storage

您好我正在使用Firebase开发Android应用程序,我在尝试从firebase onchange方法中获取数据时遇到问题它会一直从方法中返回null,就好像数据只在方法中可用而且在外面。 更明确一点,我有一个包含一些名称的数据数组和一个对firebase存储中的图片的url引用,所以我得到了数组,我将数据放在textviews等中(所有这些都发生在onchange中,因为外部数据是当我想下载图片时,我需要使用另一个firebase方法,当我这样做时我得到这个错误我认为是因为在另一个内部有一个异步方法错误说有关于最大线程达到了128或类似的东西这个,这是代码

apply(finaldata,1,function(x) {sum(x ...)})

这段代码给了我线程问题的错误 和方法分离的其他代码在Ids列表中给出null,导致idsList在onDataChange方法中为null 非常感谢你帮助和原谅我的英语错误=)

1 个答案:

答案 0 :(得分:0)

您需要将数据保存在onChanged()方法之外。您可以将它保存在ArrayList中并使用迭代器将它们取出。以下是使用onDataChanged方法的示例:

ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

        // Get Post object and use the values to update the UI
        Iterable<DataSnapshot> returns = dataSnapshot.getChildren();

        while(returns.iterator().hasNext())
        {
            Alarm al = returns.iterator().next().getValue(Alarm.class);
            GlobalData.totalAlarms.add(al);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};
mDatabase.addValueEventListener(postListener);