使用Map获取自定义类的对象

时间:2016-07-08 20:20:12

标签: android firebase firebase-realtime-database

我是使用地图的新手,我们如何从地图中获取自定义类的对象..

即。 feedSendModelClass:

Map<String, feedSendModelClass> feedKeys = (Map<String,feedSendModelClass>) dataSnapshot.getValue();

地图

DataSnapshot { key = feedsMetaPool, value = {20160708155218759={content=bzzzhss, picurl=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2FnonThumbs%2F201607081552353353553518759sahaj9917730102?alt=media&token=ce1c6e7c-28c5-442e-9405-4468bf5fc204, time=08 Jul, picThumbnail=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2Fthumbs%2F20353353535355353160708155218759sahaj9917730102?alt=media&token=14d33963-f3da-4407-a08f-ab0afce21ace}, 20160708164100152={content=sj sjs skss sksssvsjm, picurl=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2FnonThumbs%2F201607081641003535152sahaj9917730102?alt=media&token=323c4a27-1850-4bc9-adea-34e5319ac506, time=08 Jul, picThumbnail=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2Fthumbs%2F20160708164100152sahaj9917730102?alt=media&token=0b064b46-2f14-49af-b3e6-7a573f6c2d3f}, 20160708142314069={content=dadax, picurl=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2FnonThumbs%2F2016070rdgdg54353535358142314069sahaj9917730102?alt=media&token=19d03f11-d12f-43c1-96f5-ca397a9179c9, time=08 Jul, picThumbnail=https://firebasestorage.googleapis.com/v0/b/rootssahaj.appspot.com/o/feedsImages%2Fthumbs%2F20160735353508142314069sahaj9917730102?alt=media&token=ab9c73eb-ec44-46ae-9daa-6fc508cb08a6} }

Datasnapshot:

glClear

对我来说这已经变得棘手了......谢谢...... 可以通过firebase进行其他方式来实现它

2 个答案:

答案 0 :(得分:0)

如果您询问如何从名为feedKeys的地图中检索feedKeys.get(key) 对象,则此语法应该有效:

key

feedSendModelClass是您的String,对象是feedKeys.put(key, value)对象。但是,首先您需要将键和值对放入地图(因此它不是空的),String,其中键为feedSendModelClass,值为FeedSendModelClass

如果这完全没有回答你的问题,我会道歉,但从你的描述来看,理解你需要什么帮助有点困难。

在一个不相关的说明中,将类命名为[a,b,c,d]更合适,因为Java约定类以大写字母开头。

答案 1 :(得分:0)

如果您使用的是Firebase,则可以使用ChildEventListener。它为节点中的每个初始子节点调用onChildAdded()方法一次,并且每次添加新子节点时。然后你可以直接将Object添加到ArrayList(或用它做任何你想做的事)

ArrayList<feedSendModelClass> feedKeysArrayList = new ArrayList<>();

DatabaseReference feedKeysRef = FirebaseDatabase.getInstance().getReference("path/to/the/feedkeys");
feedKeysRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            feedKeysArrayList.add(dataSnapshot.getValue(feedSendModelClass.class));
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            // Add appropriate code
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            // Add appropriate code
        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
            // Add appropriate code
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            // Add appropriate code
        }
    });