获取一个节点的子列表,然后在firebase中的另一个节点中迭代类似的值,然后获取ita值(firebase android))

获取一个节点的子列表,然后在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

我的Firebase数据结构:

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());