Java Firebase数据库:如何获取密钥并加入?
我想使用Firebases数据库中存储的数据创建一个重复的recycler视图,但问题是我必须加入,我不知道如何在我的情况下这样做 我希望获取请求者键值下的数据,并希望使用用户键值数据。我想做的是只在请求者用户id下查找,并获取数据全名和图像 也许它需要加入?我该怎么做 这是我获取请求者下数据的片段Java Firebase数据库:如何获取密钥并加入?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想使用Firebases数据库中存储的数据创建一个重复的recycler视图,但问题是我必须加入,我不知道如何在我的情况下这样做 我希望获取请求者键值下的数据,并希望使用用户键值数据。我想做的是只在请求者用户id下查找,并获取数据全名和图像 也许它需要加入?我该怎么做 这是我获取请求者下数据的片段 package com.example.together.fragment; public class PetchingLoungeFragment extends Fragment {
package com.example.together.fragment;
public class PetchingLoungeFragment extends Fragment {
private static final String TAG = "PetFirendsFragment";
RecyclerView recyclerView;
PetchingLoungeAdapter petchingLoungeAdapter;
List<Lounge> requestorUserList;
FirebaseUser firebaseUser;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Log.d(TAG, "분양키 리스트 목록처음"+requestorUserList);
View view = inflater.inflate(R.layout.fragment_pet_firends, container, false);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("PetchingBunyang").child(firebaseUser.getUid()).child("Requestor");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
for (DataSnapshot childSnapshot : dataSnapshot.getChildren())
{
Lounge lounge = childSnapshot.getValue(Lounge.class);
String key = childSnapshot.getKey();
Log.d(TAG, "라운지키"+key);
//각 신청키
lounge.setRequestorId(key);
requestorUserList.add(lounge);
Log.d(TAG, "신청자키: "+requestorUserList);
Log.d(TAG, "신청: "+lounge);
}
Collections.reverse(requestorUserList);
petchingLoungeAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
requestorUserList = new ArrayList<>();
petchingLoungeAdapter = new PetchingLoungeAdapter(getContext(), requestorUserList);
recyclerView.setAdapter(petchingLoungeAdapter);
return view;
}
}
package com.example.together.adapter;
public class PetchingLoungeAdapter extends RecyclerView.Adapter<PetchingLoungeAdapter.MyViewHolder> {
private static final String TAG = "PetchingBunyangAdapter";
FirebaseUser firebaseUser;
DatabaseReference reference;
Context mContext;
List<Lounge> mLounge;
public PetchingLoungeAdapter(Context mContext, List<Lounge> mLounge) {
this.mContext = mContext;
this.mLounge = mLounge;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_petching_lounge, parent, false);
return new PetchingLoungeAdapter.MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int position)
{
final Lounge lounge = mLounge.get(position);
getRequestorUserInfo(lounge.getRequestorId(), viewHolder.img_requestor, viewHolder.requestor_name);
viewHolder.img_requestor.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(v.getContext(), PetchingBunyangDetailInfo.class);
// intent.putExtra("petBunyangId",mUser.get(position).getPetBunyangId());
mContext.startActivity(intent);
}
});
}
@Override
public int getItemCount()
{
return mLounge.size();
//mPetchingLounge.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder
{
public Button allow, refuse;
public ImageView img_requestor;
public TextView requestor_name;
public MyViewHolder(View itemView)
{
super(itemView);
img_requestor = itemView.findViewById(R.id.img_requestor);
allow = itemView.findViewById(R.id.allow);
refuse = itemView.findViewById(R.id.refuse);
requestor_name = itemView.findViewById(R.id.requestor_name);
}
}
// 펫 정보 이름, 나이, 견종, 성별,
private void getRequestorUserInfo(String petbunyangid, final ImageView imageView, final TextView petName)
{
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid()).child("Requestor").child(petbunyangid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Lounge lounge = dataSnapshot.getValue(Lounge.class);
lounge.getRequestorId();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
package com.example.together.fragment;
公共类PetchingLoungeFragment扩展了片段{
私有静态最终字符串TAG=“PetFirendsFragment”;
回收视图回收视图;
小矮人小矮人;
列表请求者用户列表;
FirebaseUser FirebaseUser;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
Log.d(标记,“분양키 리스트 목록처음"+请求者用户列表);
视图=充气机。充气(R.layout.fragment\u pet\u firends,container,false);
recyclerView=view.findViewById(R.id.recycler\u视图);
recyclerView.setHasFixedSize(true);
firebaseUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“PetchingBunyang”).child(firebaseUser.getUid()).child(“请求者”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot)
{
对于(DataSnapshot childSnapshot:DataSnapshot.getChildren())
{
Lounge Lounge=childSnapshot.getValue(Lounge.class);
String key=childSnapshot.getKey();
Log.d(标记,“라운지키“+键);
//각 신청키
lounge.setRequestorId(钥匙);
requestorUserList.add(休息室);
Log.d(标记,“신청자키: “+请求者用户列表);
Log.d(标记,“신청: “+休息室);
}
集合。反向(请求者用户列表);
petchingLoungeAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
requestorUserList=新的ArrayList();
petchingLoungeAdapter=新的petchingLoungeAdapter(getContext(),requestorUserList);
recyclerView.setAdapter(petchingLoungeAdapter);
返回视图;
}
}
这是我的回收器视图适配器
package com.example.together.fragment;
public class PetchingLoungeFragment extends Fragment {
private static final String TAG = "PetFirendsFragment";
RecyclerView recyclerView;
PetchingLoungeAdapter petchingLoungeAdapter;
List<Lounge> requestorUserList;
FirebaseUser firebaseUser;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Log.d(TAG, "분양키 리스트 목록처음"+requestorUserList);
View view = inflater.inflate(R.layout.fragment_pet_firends, container, false);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("PetchingBunyang").child(firebaseUser.getUid()).child("Requestor");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
for (DataSnapshot childSnapshot : dataSnapshot.getChildren())
{
Lounge lounge = childSnapshot.getValue(Lounge.class);
String key = childSnapshot.getKey();
Log.d(TAG, "라운지키"+key);
//각 신청키
lounge.setRequestorId(key);
requestorUserList.add(lounge);
Log.d(TAG, "신청자키: "+requestorUserList);
Log.d(TAG, "신청: "+lounge);
}
Collections.reverse(requestorUserList);
petchingLoungeAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
requestorUserList = new ArrayList<>();
petchingLoungeAdapter = new PetchingLoungeAdapter(getContext(), requestorUserList);
recyclerView.setAdapter(petchingLoungeAdapter);
return view;
}
}
package com.example.together.adapter;
public class PetchingLoungeAdapter extends RecyclerView.Adapter<PetchingLoungeAdapter.MyViewHolder> {
private static final String TAG = "PetchingBunyangAdapter";
FirebaseUser firebaseUser;
DatabaseReference reference;
Context mContext;
List<Lounge> mLounge;
public PetchingLoungeAdapter(Context mContext, List<Lounge> mLounge) {
this.mContext = mContext;
this.mLounge = mLounge;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_petching_lounge, parent, false);
return new PetchingLoungeAdapter.MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int position)
{
final Lounge lounge = mLounge.get(position);
getRequestorUserInfo(lounge.getRequestorId(), viewHolder.img_requestor, viewHolder.requestor_name);
viewHolder.img_requestor.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(v.getContext(), PetchingBunyangDetailInfo.class);
// intent.putExtra("petBunyangId",mUser.get(position).getPetBunyangId());
mContext.startActivity(intent);
}
});
}
@Override
public int getItemCount()
{
return mLounge.size();
//mPetchingLounge.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder
{
public Button allow, refuse;
public ImageView img_requestor;
public TextView requestor_name;
public MyViewHolder(View itemView)
{
super(itemView);
img_requestor = itemView.findViewById(R.id.img_requestor);
allow = itemView.findViewById(R.id.allow);
refuse = itemView.findViewById(R.id.refuse);
requestor_name = itemView.findViewById(R.id.requestor_name);
}
}
// 펫 정보 이름, 나이, 견종, 성별,
private void getRequestorUserInfo(String petbunyangid, final ImageView imageView, final TextView petName)
{
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid()).child("Requestor").child(petbunyangid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Lounge lounge = dataSnapshot.getValue(Lounge.class);
lounge.getRequestorId();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
package com.example.together.adapter;
公共类PetchingLoungLeadapter扩展了RecyclerView.Adapter{
私有静态最终字符串标记=“PetchingBunyangAdapter”;
FirebaseUser FirebaseUser;
数据库参考;
语境;
名单公告;
公共PetchingLoungHeadapter(上下文mContext,列表消息){
this.mContext=mContext;
this.mLounge=mLounge;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图=布局更平坦。从(mContext)。充气(R.layout.list\u petching\u lounge,parent,false);
返回新的PetchingLoungeAdapter.MyViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(MyViewHolder viewHolder,int位置)
{
最终休息室=m休息室获得(位置);
getRequestorUserInfo(lounge.getRequestorId(),viewHolder.img_requestor,viewHolder.requestor_name);
viewHolder.img_requestor.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
Intent Intent=newintent(v.getContext(),PetchingBunyangDetailInfo.class);
//intent.putExtra(“petBunyangId”,mUser.get(position.getPetBunyangId());
mContext.startActivity(意图);
}
});
}
@凌驾
public int getItemCount()
{
返回mLounge.size();
//mPetchingLounge.size();
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder
{
公共按钮允许、拒绝;
公共图像视图img_请求者;
公共文本视图请求者名称;
公共MyViewHolder(查看项目视图)
{
超级(项目视图);
img_requestor=itemView.findviewbyd(R.id.img_requestor);
allow=itemView.findviewbyd(R.id.allow);
拒绝=itemView.findViewById(R.id.Reject);
requestor_name=itemView.findviewbyd(R.id.requestor_name);
}
}
// 펫 정보 이름, 나이, 견종, 성별,
私有void getRequestorUserInfo(字符串petbunyangid、最终图像视图ImageView、最终文本视图petName)
{
firebaseUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“用户”).child(firebaseUser.getUid()).child(“请求者”).child(petbunyangid);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
Lounge Lounge=dataSnapshot.getValue(Lounge.class);
lounge.getRequestorId();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
}
尝试以下操作:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("PetchingBunyang").child(firebaseUser.getUid()).child("Requestor");
DatabaseReference userReference = FirebaseDatabase.getInstance().getReference("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
for(DataSnapshot ds : datas.getChildren()){
String id = ds.getKey();
userReference.child(id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String fullName = dataSnapshot.child("fullname").getValue(String.class);
String imageUrl = dataSnapshot.child("imageUrl").getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
首先添加对子请求者的引用
,然后在其中循环两次,以便能够获取值为true
的用户ID
。然后在检索用户ID
后,添加另一个引用