gpt4 book ai didi

android - 将 FirebaseRecyclerViewAdapter 耦合到 bool /字符串 Map.Entry

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:43 25 4
gpt4 key购买 nike

我在应用程序的许多位置使用 com.firebaseui:firebase-ui:0.2.0 库中的 FirebaseRecyclerViewAdapter。我的问题是如何在查询参数返回多个“索引”条目值 (Map.Entry) 的情况下应用它。

如 Firebase 文档 ( https://www.firebase.com/docs/android/guide/structuring-data.html ) 中所述,我使用索引来保持数据结构平坦。这导致我需要将这些索引绑定(bind)到我的 ViewHolder 的情况。在填充 View 方法中,我使用索引的键来检索数据以填充查看器。

我在创建适配器时遇到问题,不确定如何在 bool /字符串 Map 的情况下定义“modelClass”参数。条目:

mAdapter = new FirebaseRecyclerViewAdapter<Map.Entry<String, Boolean>, ItemViewHolder>(???.class, R.layout.my_card, ItemViewHolder.class, getItemIndexQuery(mKey) ) {
...
}

最佳答案

您的值是一个Boolean,而不是一个Map。所以你的评论是正确的:你需要为值类型指定 Boolean/Boolean.class 。为了能够随后查找 key ,您需要升级到 FirebaseUI-Android 0.2.2。在那个版本中,我们添加了一个 populateViewHolder(VH, T, int) 重载,它获取项目的位置作为参数。这样,您就可以查找该项目的 key 。

假设这是您的 JSON 结构:

{
"items": {
"pushid1": "Fri Jan 01 2016 16:40:54 GMT-0800 (PST)",
"pushid2": "Fri Jan 01 2016 16:41:07 GMT-0800 (PST)",
"pushid3": "Fri Jan 01 2016 16:41:25 GMT-0800 (PST)",
"pushid4": "Fri Jan 01 2016 16:41:37 GMT-0800 (PST)",
"pushid5": "Fri Jan 01 2016 16:42:04 GMT-0800 (PST)"
},
"index": {
"pushid1": true,
"pushid3": true,
"pushid5": true
}
}

因此我们存储表示日期/时间的字符串,并有一个索引来选择这些项目的子集。

我们现在可以从索引中加载节点,然后加载这些节点引用的项目并将它们显示在 View 中:

FirebaseRecyclerViewAdapter<Boolean, ItemViewHolder> adapter = 
new FirebaseRecyclerViewAdapter<Boolean, ItemViewHolder>(
Boolean.class, android.R.layout.two_line_list_item, ItemViewHolder.class, ref.child("index")){
protected void populateViewHolder(final ItemViewHolder viewHolder, Boolean model, int position) {
String key = this.getRef(position).getKey();
ref.child("items").child(key).addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
String date = dataSnapshot.getValue(String.class);
((TextView)viewHolder.itemView.findViewById(android.R.id.text1)).setText(date);
}

public void onCancelled(FirebaseError firebaseError) { }
});
}
};

屏幕上的输出:

Android app showing three dates

完整代码参见this repo中的Activity34559171 .

关于android - 将 FirebaseRecyclerViewAdapter 耦合到 bool /字符串 Map.Entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com