获取一个节点的子列表,然后在firebase中的另一个节点中迭代类似的值,然后获取ita值(firebase android))
我的Firebase数据结构:获取一个节点的子列表,然后在firebase中的另一个节点中迭代类似的值,然后获取ita值(firebase android)),android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,我的Firebase数据结构: Bids- -jobID -userID : 1 -userID2 : 1 Jobs -jobID -name:'' -location:'' -desc:'' Users -userID -name:'name1' -image: 'downloadUrl' -UserID2 -name:'name2
Bids-
-jobID
-userID : 1
-userID2 : 1
Jobs
-jobID
-name:''
-location:''
-desc:''
Users
-userID
-name:'name1'
-image: 'downloadUrl'
-UserID2
-name:'name2'
-image: 'downloadUrl'
我能够使用以下代码获取投标中jobID下的所有密钥,即userID和userID2:
mBidders.child(getIntent().getExtras().getString("jobID")).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> lt = new ArrayList<String>();
for (DataSnapshot mSnapshot: dataSnapshot.getChildren()) {
lt.add(String.valueOf(mSnapshot.getKey()));
}
for (String userId : lt) {
Log.d("users", userId);
getUsersInfo(userId);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我似乎不理解这个错误。如果有其他更好的方法,我会非常感激的以上是一个格式错误,当您将其捕获为字符串时,您的结果是用户类型的 尝试:
//获取作业
Map mapJobs=新HashMap();
对于(DataSnapshot i:DataSnapshot.getChildren()){
String jobs=i.getValue(String.class);
put(i.getKey(),jobs);
}
ArrayList jobsList=新的ArrayList(mapJobs.values());
//获得出价
Map mapBids=newhashmap();
对于(DataSnapshot i:DataSnapshot.getChildren()){
String bid=i.getValue(String.class);
mapBids.put(i.getKey(),bid);
}
ArrayList bidList=新的ArrayList(mapBids.values());
您在哪里定义bidRecycleView?在onCreateView bidRecycleView=(RecycleView)findViewById(R.id.biddersRV);RecycleView.LayoutManager lm=新的GridLayoutManager(BiddedJobActivity.this,3);bidRecycleView.setLayoutManager(lm);bidRecycleView.addItemDecoration(新的GridSpacingItemDecoration(3,dpToPx(3),真));setItemAnimator(新的DefaultItemAnimator());还有xml代码请在获取bidlist之后,如何迭代它以从上面的users节点获取所有值?for在列表中循环
getUsersInfo(String userId){
Query query = mUsers.child(userId);
FirebaseRecyclerAdapter<Users, BiddedJobViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, BiddedJobViewHolder>(
Users.class,
R.layout.bidder_profile_row,
BiddedJobViewHolder.class,
query
) {
@Override
protected void populateViewHolder(BiddedJobViewHolder viewHolder, Users model, int position) {
viewHolder.setTitle(model.getUser());
viewHolder.setImge(getApplicationContext(), model.getImage());
}
};
bidRecycleView.setAdapter(firebaseRecyclerAdapter);
}
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.toni.patakazi.model.Users
at com.google.android.gms.internal.zzbqi.zze(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.firebase.ui.database.FirebaseRecyclerAdapter.parseSnapshot(FirebaseRecyclerAdapter.java:154)
at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:143)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:183)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6067)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6100)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5282)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5158)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2061)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:562)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1408)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:580)
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3379)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3188)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3632)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1959)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1813)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1722)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:633)
at android.widget.FrameLayout.onLayout(FrameLayout.java:568)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1959)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1813)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1722)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:633)
at android.widget.FrameLayout.onLayout(FrameLayout.java:568)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1959)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1813)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1722)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:633)
at android.widget.FrameLayout.onLayout(FrameLayout.java:568)
at android.view.View.layout(View.java:15927)
at android.view.ViewGroup.layout(ViewGroup.java:5113)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2445)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2142)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1267)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6501)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:800)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:572)
at android.v
//Get Jobs
Map<String, String> mapJobs = new HashMap<String, String>();
for( DataSnapshot i : dataSnapshot.getChildren()) {
String jobs = i.getValue(String.class);
mapJobs.put(i.getKey(),jobs);
}
ArrayList<String> jobsList = new ArrayList<>(mapJobs.values());
//Get Bids
Map<String, String> mapBids = new HashMap<String, String>();
for( DataSnapshot i : dataSnapshot.getChildren()) {
String bid = i.getValue(String.class);
mapBids.put(i.getKey(),bid);
}
ArrayList<String> bidList = new ArrayList<>(mapBids.values());