首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据存储到类firebase android studio中。

将数据存储到类firebase android studio中。
EN

Stack Overflow用户
提问于 2018-10-16 09:45:31
回答 1查看 60关注 0票数 0

这是我的数据库截图>

我有一个叫Imgs的类

代码语言:javascript
复制
public class Imgs{
    public long nums;      //how many picutres
    public String[] url ;  //the urls of pictures
    public Imgs(){                           //constructor
        this.nums=1;
        this.url = new String[1];
        url[0] = "HELLO";
    }
    public Imgs(long nums){                  //constructor
        this.nums = nums;
        this.url = new String[(int)nums];
    }
    public Imgs(long nums,String[] url){      //constructor
        this.url = url;
        this.nums=nums;
    }

    public void setUrl(String[] url) {         //setter
        this.url = url;
    }

    public void setNums(long nums) {          //setter
        this.nums = nums;
        this.url = new String[(int)this.nums];
    }

    public long getNums() {
        return nums;
    }

    public String[] getUrl() {
        String []a = {"null"};
        if(url!=null)return url;
        else return a;
    }
}

类Imgs中的变量num& url表示有多少张图片和图片的url。

我要将dm/ store /7-11的子num放入类Imgs的变量num中,dm/store/7-11/ url的子表1~8放入Img的变量url中。

这就是我所做的:

代码语言:javascript
复制
public void getImages(String store){
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("dm/store/"+store);

    myRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()){
                imgs.setNums((long)ds.child("nums").getValue());
                int length = (int)((long)ds.child("nums").getValue());
                System.out.println("length:"+length);
                String [] tempUrl =new String [length];
                for(int i=1;i<length+1;i++){
                    tempUrl[i] = (String)ds.child("url").child(String.valueOf(i)).getValue();
                }
                imgs.setUrl(tempUrl);
            }
        }

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

        }
    });
}

我已经宣布

静态公共Imgs imgs;

在OnCreate()上面,我在OnCreate()中调用这个getImages函数,如下所示

getImages(7-11);

但是我不知道为什么,当我运行程序时,logcat会显示错误

尝试在空对象引用上调用虚拟方法'long java.lang.Long.longValue()‘

在这条线

imgs.setNums((long)ds.child("nums").getValue());

为什么?我以为我是对的。

有人能给我什么建议吗?非常感谢。

更新

代码语言:javascript
复制
    DatabaseReference myRef = FirebaseDatabase.getInstance().getReference("dm");
    myRef.child("store").child(store).child("url").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            int i=0;
            for(DataSnapshot ds : dataSnapshot.getChildren()){
                String tempUrl = (String)ds.getValue();
                i++;
                /*Handle tempUrl*/
                /*...          */
            }
        }

这项工作很成功。

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 10:30:12

试试这个

代码语言:javascript
复制
public void getImages(String store){
    FirebaseDatabase database = FirebaseDatabase.getInstance();
   // DatabaseReference myRef = database.getReference().child("dm").child("store")child(store);
    DatabaseReference myRef = database.getReference().child("dm").child("store")child(store).child("url");

    String url1,url2,url3,url4,url5,url6,url7,url8;

    myRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

      // String nums = dataSnapshot.child("nums").getValue(String.class);

          //    imgs.setNums((long)nums);

    if(dataSnapshot.exists() && dataSnapshot.getChildrenCount()>0) {

         Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
        if (map.get("1") != null) {
            url1 = map.get("1").toString();
        }
        if (map.get("2") != null) {
        url2 = map.get("2").toString();
        }
        if (map.get("3") != null) {
            url3 = map.get("3").toString();
        }
        if (map.get("4") != null) {
        url4 = map.get("4").toString();
        }
        if (map.get("5") != null) {
            url5 = map.get("5").toString();
        }
        if (map.get("6") != null) {
        url6 = map.get("6").toString();
        }
        if (map.get("7") != null) {
            url7 = map.get("7").toString();
        }
        if (map.get("8") != null) {
        url8 = map.get("8").toString();
        }

    }
        }

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

        }
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52832568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档