0

我正在使用 Google Firebase 和 FirebaseUI

我像这样将值列表传递给 FirebaseListAdapter

 ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot requestSnapshot: snapshot.getChildren()) {
                requestList request = requestSnapshot.getValue(requestList.class);
                Log.i("Chat", request.getTitle()+": "+request.getDescription()+"    "+request.getKey());
            }

我想将记录的索引(键)与其中的信息一起存储。但是,如果字段名称相同,它们会自动映射自己,这让我无法解决。

我尝试通过名称“key”调用 requestList 类中的“key”方法的属性,但这没有奏效

返回的数据结构如下所示

    Key:{
    "RequestTitle":"Value",
    "RequestDescription":"description",
    "RequestItems":{ item 1 item 2}
}

请求类看起来像这样

public class requestList {

    String RequestTitle;
    String RequestDescription;
    String key;

    public requestList() {
    }

    public requestList(String RequestTitle, String RequestDescription, String key) {
        this.RequestTitle = RequestTitle;
        this.RequestDescription = RequestDescription;
        this.key = key;
    }

    public String getTitle() {
        return RequestTitle;
    }

    public String getKey() {
        return key;
    }

    public String getDescription() {
        return RequestDescription;
    }
}
4

2 回答 2

1

当您调用时,requestSnapshot.getValue(requestList.class)您将从数据库中获取 JSON并将其转换为requestList对象。关键不是其中的一部分。

但是,您可以轻松调用requestSnapshot.getKey()以获取每个快照的密钥。

如果您想同时保留键和值,则可能值得简单地保留DataSnapshot包含它们的因为。

于 2016-06-12T22:18:16.583 回答
1

我赞成上面的答案,因为我无法输入,但是这是有效的答案

我更改了我的 requestList 类以包含一个 setKey 方法,然后从 onDataChange 方法中调用它。不确定它是否正确,但它确实解决了问题

    public void onDataChange(DataSnapshot snapshot) {
        for (DataSnapshot requestSnapshot: snapshot.getChildren()) {
            //requestList request = requestSnapshot.getValue(requestList.class);
            requestList request = requestSnapshot.getValue(requestList.class);
            request.setKey(requestSnapshot.getKey());
            Log.i("Chat", request.getTitle()+": "+request.getDescription()+"    "+request.getKey());
        }
    }

和 requestList 类

public class requestList {

    String RequestTitle;
    String RequestDescription;
    String key;

    DataSnapshot requestSnapshot;


    public requestList() {
    }

    public requestList(DataSnapshot requestSnapshot) {
        //this.RequestTitle = RequestTitle;
        //this.RequestDescription = RequestDescription;
        //this.key = key;

        this.requestSnapshot = requestSnapshot;
    }

    public String getTitle() {
        return RequestTitle;
    }

    public String getKey() {
        return key;
    }

    public String getDescription() {
        return RequestDescription;
    }


    public void setKey(String key) {
        this.key = key;
    }
}
于 2016-06-13T21:41:54.647 回答