【问题标题】:How to get data from Firebase in recyleview Adapter in android如何在 android 的 recyclerview 适配器中从 Firebase 获取数据
【发布时间】:2017-10-05 05:18:50
【问题描述】:
大家早上好
我想在 Recycleview 适配器中从 Firebase 获取数据
这是我的 Firebase 结构:
在我的 recycleView 适配器中,数据来自 api。
firebase结构说明
这里 user_product_bid 是我的主节点,在 "42" 下是我的 product_id(子节点),并且在该“bids”值下可用。我想根据适配器 positionwise product_id 从 firebase 获取数据。我已成功从 recycleView 发布数据,但在获取时出现问题
请帮助我如何完成这项任务或建议我。
【问题讨论】:
标签:
android
firebase
android-recyclerview
【解决方案1】:
使用以下代码获取数据并将其填充到recyclerview中
List<User_Product_Bid> userPdtBidObj = new ArrayList<User_Product_Bid>();
private DatabaseReference firebaseInstance = FirebaseDatabase.getInstance().getReference();
private DatabaseReference
userPdtsBidRef = firebaseInstance.child("user_product_bid");
userPdtsBidRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long count = dataSnapshot.getChildrenCount();
if(count != 0) {
for (DataSnapshot dataObj : dataSnapshot.getChildren()) {
User_Product_Bid obj = dataObj.getValue(User_Product_Bid.class);
userPdtBidObj.add(obj);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
});
User_Product_Bid 的模型类
@IgnoreExtraProperties
public class User_Product_Bid {
@SerializedName("bids")
private boolean List<String> bids;
public User_Product_Bid() {
}
public List<String> getBids() {
return bids;
}
public void setBids(List<String> bids) {
this.bids = bids;
}
}
【解决方案2】:
您可以简单地做到这一点.. 有一个简单的方法。但你必须为此创建一个模型类。这取决于你......
databaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for (DataSnapshot data : dataSnapshot.getChildren()) {
String product_id = data.getKey(); //your product id
Arrylist<String> bits = data.getValue(); //bits for this product
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});