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

Getting the child list of a node then iterate for similar values in another node in firebase and then get ita value(Firebase android))

我的 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) {

        }
    });

现在,当我想使用这种方法获取用户中每个用户下的所有值时:

 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

我似乎不明白error.If还有另一种更好的方法我会非常感激

以上是您在将其捕获为字符串时导致的类型为 Users 的格式错误 尝试:

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