2017-10-12 44 views
1

在下面的代码中,我通过他们的血型和地点获取用户列表。这工作非常好。我想获得他们的令牌列表。那我该怎么做。我尝试使用firebaseRecyclerAdapter.getItemCount()和一个循环,但它没有帮助。那么我现在该做什么?我想把标记放入一个字符串数组中。如何从Firebase数据库获取令牌列表?

enter image description here

public class SearchActivity extends AppCompatActivity { 

    private Toolbar mToolbar; 
    private String bloodgroup; 
    private String locality; 
    private RecyclerView allUsersList; 
    private Query allDatabaseUserReference; 
    private String[] TokenList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 

     bloodgroup = getIntent().getStringExtra("bt"); 
     locality = getIntent().getStringExtra("pa"); 

     allDatabaseUserReference = FirebaseDatabase.getInstance().getReference().child("Users").orderByChild("user_search").equalTo(bloodgroup + ", " + locality); 


     mToolbar = (Toolbar) findViewById(R.id.search_activity_app_bar); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setTitle("Search Result"); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



     allUsersList = (RecyclerView) findViewById(R.id.all_users_list); 
     allUsersList.setHasFixedSize(true); 
     allUsersList.setLayoutManager(new LinearLayoutManager(this)); 

    } 


    @Override 
    protected void onStart() { 
     super.onStart(); 

     FirebaseRecyclerAdapter<AllUsers,AllUsersViewHolder> firebaseRecyclerAdapter 
       = new FirebaseRecyclerAdapter<AllUsers, AllUsersViewHolder> 
       (
         AllUsers.class, 
         R.layout.all_users_display_layout, 
         AllUsersViewHolder.class, 
         allDatabaseUserReference 
       ) 
     { 
      @Override 
      protected void populateViewHolder(AllUsersViewHolder viewHolder, AllUsers model, final int position) { 

       viewHolder.setUser_name(model.getUser_name()); 
       viewHolder.setUser_blood(model.getUser_blood()); 
       viewHolder.setUser_mobile(model.getUser_mobile()); 
       viewHolder.setUser_thumb_image(getApplicationContext(),model.getUser_thumb_image()); 



       viewHolder.mView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) 
        { 
         String visit_user_id = getRef(position).getKey(); 
         Intent profileIntent = new Intent(SearchActivity.this, ProfileActivity.class); 
         profileIntent.putExtra("visit_user_id",visit_user_id); 
         startActivity(profileIntent); 
        } 
       }); 

      } 
     }; 



     allUsersList.setAdapter(firebaseRecyclerAdapter); 

    } 

    public static class AllUsersViewHolder extends RecyclerView.ViewHolder 
    { 
     View mView; 

     public AllUsersViewHolder(View itemView) { 
      super(itemView); 

      mView = itemView; 
     } 

     public void setUser_name(String user_name) 
     { 
      TextView name = (TextView) mView.findViewById(R.id.all_users_username); 
      name.setText(user_name); 
     } 

     public void setUser_blood(String user_blood) 
     { 
      TextView blood = (TextView) mView.findViewById(R.id.all_users_blood); 
      blood.setText(user_blood); 
     } 

     public void setUser_mobile(String user_mobile) 
     { 
      TextView mobile = (TextView) mView.findViewById(R.id.all_users_phone); 
      mobile.setText(user_mobile); 
     } 

     public void setUser_thumb_image(Context ctx, String user_thumb_image) 
     { 
      CircleImageView thumb_image = (CircleImageView) mView.findViewById(R.id.all_users_profile_image); 
      Picasso.with(ctx).load(user_thumb_image).placeholder(R.drawable.default_profile).into(thumb_image); 
     } 



    } 










} 

回答

0

你可以在你的应用参考做childEventListnerallDatabaseUserReference

allDatabaseUserReference.addChildEventListener(childEventListener); 

,这里是你的childEventListener

ChildEventListener childEventListener = new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     if(dataSnapshot!=null){ 
      if(dataSnapshot.hasChild("device_token")){ 
      tokenList.add(dataSnapshot.child("device_token").getValue().toString()); 
      } 
     } 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {} 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) {} 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {} 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
+0

如果需要令牌的阵列? – Haider

+0

当您尝试通过该查询获取用户列表时,您可以仅在此时并排获取令牌。这个'onChildAdded'将会为每个用户调用,并且每个用户的令牌只能在那个时候被保存。 – Anmol

+0

而我将如何获得用户的UID? 与当前用户一样,我们使用“mAuth.getCurrentUser()。getUid();”。 – Haider