android - 我已经使用了数据库引用,那么为什么我要将所有用户数据都放入 recyclerview 我只希望一个用户数据进入 recycler 视图?
问题描述
下面是我当前的回收器视图屏幕截图...当我搜索单个用户时,我得到了所有 8 个节点的详细信息数据,但它也添加到了我不想要的另一个用户子节点的列表中。
我的 Firebase 数据库结构如下:
我只想要单个用户“staydetails”。而不是在我的回收器适配器中,我正在获取所有用户数据。
当我在搜索一个用户时添加多个用户及其房间住宿详细信息时,它会将所有用户住宿详细信息数据提供给适配器。这是我的 MainActivity 回收器视图,带有适配器和数据库参考。先感谢您
final String userformno = mobileorformnosearch.getText().toString().trim();
globalmobileno = userformno;
if (userformno.trim().length() == 10) {
list.clear();
PassDataRef = FirebaseDatabase.getInstance().getReference().child("Passanger");
PassDataRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
if (dataSnapshot.hasChild(userformno)) {
// run some code
//MobileNoDataWise
UserDataRegistration user = dataSnapshot.child(userformno).getValue(UserDataRegistration.class);
YatriName.setText(user.getUsername());
YatriAge.setText(user.getAge());
YatriCity.setText(user.getCity());
Yatriphonenumber.setText(user.getMobileno());
YatriformNo.setText(user.getFormno());
YatriCoachNo.setText(user.getCoachno());
YatriSeatNo.setText(user.getSeatno());
YatriBearth.setText(user.getBearth());
YatriBusno22.setText(user.getBustwono());
YatriBusSeatNo22.setText(user.getBustwoseatno());
YatriBusno32.setText(user.getBusthreeno());
YatriBusSeatNo32.setText(user.getBusthreeseatno());
YatriPhotoUri.setText(user.getProfilephoto());
YatriGender.setText(user.getGender());
YatriMBusno.setText(user.getMbusno());
YatriMBusSeatno.setText(user.getMseatno());
// String url ="https://firebasestorage.googleapis.com/v0/b/uttammangal-ad8b8.appspot.com/o/profilepic%2F223.jpg?alt=media&token=703bcc8f-c2c3-4beb-bffc-40e52daa572d";// user.getProfilephoto();
String Url = user.getProfilephoto();
if (Url != null) {
Picasso
.get()
.load(Url)
.resize(200, 200) // resizes the image to these dimensions (in pixel)
.centerCrop()
.into(YatriImageView);
// Glide.with(getApplicationContext()).load(Url).into(YatriImageView);
} else {
Toast.makeText(MainActivity.this, "NO Image Found!!", Toast.LENGTH_LONG).show();
}
RecycleDataRef = FirebaseDatabase.getInstance().getReference("Passanger");
list.clear();
Query qry = RecycleDataRef.child(userformno).child("StayDetails");
qry.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot1) {
for (DataSnapshot dataSnapshot2 : dataSnapshot1.getChildren()) {
//UserDataRegistration user = dataSnapshot.child(userformno).getValue(UserDataRegistration.class);
UserDataRetrieve u = dataSnapshot2.getValue(UserDataRetrieve.class);
//UserDataRetrieve u = dataSnapshot1.getValue(UserDataRetrieve.class);
list.add(u);
}
adapter = new MyAdapter(MainActivity.this, list);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
} else {
Toast toast = Toast.makeText(MainActivity.this, "No Record Found!!!!!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
break;
}
}//ForloopClosing
return;
} //Main DataSnapshot Profile Data closing
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MainActivity.this, "Please Enter Valid MobileNo!!", Toast.LENGTH_LONG).show();
}
}); //addvaluelistner main profile Data Closing
//} //Query node equals closing
} else {
Toast.makeText(MainActivity.this, "Please Enter 10 Digit MobileNo!!", Toast.LENGTH_LONG).show();
}
} //OnClick Closing
解决方案
您可以简单地通过搜索获取所需的用户数据,而不是遍历所有用户,如下所示:
FirebaseDatabase.getInstance().getReference().child("Passanger").child(userformno).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserDataRegistration user = dataSnapshot.getValue(UserDataRegistration.class);
...
if(dataSnapshot.hasChild("StayDetails")) {
for (DataSnapshot dataSnapshot2 : dataSnapshot.child("StayDetails").getChildren()) {
UserDataRetrieve u = dataSnapshot2.getValue(UserDataRetrieve.class);
//UserDataRetrieve u = dataSnapshot1.getValue(UserDataRetrieve.class);
list.add(u);
}
...
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast toast = Toast.makeText(MainActivity.this, "No Record Found!!!!!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
);
希望这将为您提供所需的确切数据。
推荐阅读
- python - binaryTree 递归循环返回无
- makefile - 将草稿脚本从 bash 转换为 Make
- javascript - 如何替换 FullCalendar 库中的所有事件
- python-3.x - 使用 Keras 与 LSTM 和 RNN 斗争
- arrays - 我将如何分离 JSON 字典值并将它们放入 Swift 数组中?
- go - Go-Gorm:设置对象时会自动填充外键吗?
- ios - 在父项目内的框架中使用 Cocoapods 时未找到框架错误
- json - 在 Dart 中使用 json_serializer 将映射序列化为 JSON 的正确方法是什么?
- amazon-web-services - 在具有不同 AWS 账户拥有的 CMK 的 Auto Scaling 组中使用加密 EBS 卷
- python - 循环文件并在 Python 中应用函数