Android 我需要帮助来显示排序的';文件';数据根据my';收集';将列表放入RecyclerView(检索到的数据未按照列表进行排序,#AskFirebase)
我想根据我的列表在RecyclerView中显示已排序的数据(我可以检索数据,但不能根据我的集合列表进行排序)。或者,我在Firestore中已排序的地址集合列表,并想从Firestore文档列表中提取已排序的数据。请查看随附的Firestore数据库图像和java代码以了解详细信息Android 我需要帮助来显示排序的';文件';数据根据my';收集';将列表放入RecyclerView(检索到的数据未按照列表进行排序,#AskFirebase),android,firebase,android-recyclerview,google-cloud-firestore,Android,Firebase,Android Recyclerview,Google Cloud Firestore,我想根据我的列表在RecyclerView中显示已排序的数据(我可以检索数据,但不能根据我的集合列表进行排序)。或者,我在Firestore中已排序的地址集合列表,并想从Firestore文档列表中提取已排序的数据。请查看随附的Firestore数据库图像和java代码以了解详细信息 public class ViewSelectedActivity extends AppCompatActivity { private RecyclerView addressRecyclerView
public class ViewSelectedActivity extends AppCompatActivity {
private RecyclerView addressRecyclerView;
private FirebaseFirestore fireStoreDb = FirebaseFirestore.getInstance();
public static AddressAdapter addressActivityAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_selected);
addressRecyclerView = findViewById(R.id.address_recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
addressRecyclerView.setLayoutManager(layoutManager);
final List<AddressModel> addressModelList1 = new ArrayList<>();
addressModelList1.clear();
addressModelList1.add(new AddressModel("Ravi11111", "Fist1", "City1", "111111", "111"));//Manual address list is working fine.
addressModelList1.add(new AddressModel("222", "Fist1", "222", "111111", "111"));
addressModelList1.add(new AddressModel("Ravi11111", "333", "City33", "111111", "111"));
fireStoreDb.collection("Selected_user").document("Address").get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull final Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
for (long x = 1; x <= (long) task.getResult().get("Address_Size"); x++) {
String addressId = task.getResult().getString("Address_0" + x);
fireStoreDb.collection("AddressCollection").document(addressId).get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task1) {
if (task1.isSuccessful()) {
addressModelList1
.add(new AddressModel(task1.getResult().getString("Full_Name")
, task1.getResult().getString("House_No")
, task1.getResult().getString("City")
, task1.getResult().getString("Pincode")
, task1.getResult().getString("Mobile_No")));
addressActivityAdapter.notifyDataSetChanged();
}
}
});
}
}
}
});
addressActivityAdapter = new AddressAdapter(addressModelList1);
addressRecyclerView.setAdapter(addressActivityAdapter);
//address1adapter.notifyDataSetChanged();
}
}
public class AddressModel {
private String name;
private String house;
private String city;
private String pincode;
private String mobile;
public AddressModel(String name, String house, String city, String pincode, String mobile) {
this.name = name;
this.house = house;
this.city = city;
this.pincode = pincode;
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHouse() {
return house;
}
public void setHouse(String house) {
this.house = house;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getPincode() {
return pincode;
}
public void setPincode(String pincode) {
this.pincode = pincode;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
public class AddressAdapter extends RecyclerView.Adapter<AddressAdapter.AddressViewHolder> {
private List<AddressModel> addressModelList;
public AddressAdapter(List<AddressModel> addressModelList) {
this.addressModelList = addressModelList;
}
@NonNull
@Override
public AddressViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.address_item_layout, viewGroup, false);
return new AddressViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AddressViewHolder viewHolder, int position) {
String b_name = addressModelList.get(position).getName();
String b_house = addressModelList.get(position).getHouse();
String b_city = addressModelList.get(position).getCity();
String b_pincode = addressModelList.get(position).getPincode();
String b_mobile = addressModelList.get(position).getMobile();
viewHolder.setData(b_name,b_house,b_city,b_pincode, b_mobile);
}
@Override
public int getItemCount() {
return addressModelList.size();
}
class AddressViewHolder extends RecyclerView.ViewHolder {
private TextView aname;
private TextView ahouse;
private TextView acity;
private TextView apincode;
private TextView amobile;
public AddressViewHolder(@NonNull View itemView) {
super(itemView);
aname = itemView.findViewById(R.id.view_full_name);
ahouse = itemView.findViewById(R.id.view_house_no);
acity = itemView.findViewById(R.id.view_city);
apincode = itemView.findViewById(R.id.view_pincode);
amobile = itemView.findViewById(R.id.view_mobile_no);
}
private void setData(String nameText, String houseText, String cityText, String pinText, String mobileText) {
aname.setText(nameText);
ahouse.setText(houseText);
acity.setText(cityText);
apincode.setText(pinText);
amobile.setText(mobileText);
}
}
}
public class ViewSelectedActivity扩展了AppCompative活动{
私人RecyclerView地址RecyclerView;
私有FirebaseFirestore fireStoreDb=FirebaseFirestore.getInstance();
公共静态地址适配器addressActivityAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(选择R.layout.activity\u视图);
addressRecyclerView=findViewById(R.id.address\u recycler\u视图);
LinearLayoutManager layoutManager=新的LinearLayoutManager(此);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
addressRecyclerView.setLayoutManager(layoutManager);
最终列表addressModelList1=新的ArrayList();
addressModelList1.clear();
addressModelList1.add(新的AddressModel(“Ravi11111”、“Fist1”、“City1”、“111111”、“111”);//手动地址列表工作正常。
addressModelList1.add(新的AddressModel(“222”、“Fist1”、“222”、“111111”、“111”));
地址模型列表1.添加(新地址模型(“Ravi11111”、“333”、“City33”、“111111”、“111”);
fireStoreDb.collection(“选定用户”).document(“地址”).get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
公共void onComplete(@NonNull final Task){
if(task.issusccessful()){
对于(长x=1;x假设要按名称对地址进行排序,请在onComplete
回调中添加一个调用以对列表进行排序:
addressModelList1.add(new AddressModel( ... ));
// Sort list by name:
Collections.sort(addressModelList1, (address1, address2) -> address1.getName().compareTo(address2.getName());
addressActivityAdapter.notifyDataSetChanged();
我重现了你的情景:
类地址模型:
private String name;
private String house;
private String city;
private String pincode;
private String mobile;
public AddressModel(String name, String house, String city, String pincode, String mobile) {
this.name = name;
this.house = house;
this.city = city;
this.pincode = pincode;
this.mobile = mobile;
}
@Override
public String toString() {
return "AddressModel{" + "name=" + name + ", house=" + house + ", city=" + city + ", pincode=" + pincode + ", mobile=" + mobile + '}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHouse() {
return house;
}
public void setHouse(String house) {
this.house = house;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getPincode() {
return pincode;
}
public void setPincode(String pincode) {
this.pincode = pincode;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
主要内容:
publicstaticvoidmain(字符串[]args){
AddressModel a1=新的AddressModel(“名称2”、“房屋2”、“城市2”、“pincod2”、“手机2”);
AddressModel a2=新的AddressModel(“名称1”、“房屋1”、“城市1”、“pincod1”、“手机1”);
AddressModel a3=新的AddressModel(“name4”、“House 4”、“city4”、“pincod4”、“mobile4”);
AddressModel a4=新的AddressModel(“name3”、“House 3”、“city3”、“pincod3”、“mobile3”);
AddressModel a5=新的AddressModel(“name0”、“House 0”、“city0”、“pincod0”、“mobile0”);
ArrayList=新建ArrayList();
增加(a1);
增加(a2);
增加(a3);
增加(a4);
增加(a5);
System.out.println(“未排序列表:”);
显示(列表);
System.out.println(“按名称排序:”);
//按名称排序
比较器compareByName=(AddressModel am1,AddressModel am2)->
am1.getName().compareTo(am2.getName());
Collections.sort(list,compareByName);
显示(列表);
}
/**
*打印列表
*@param列表
*/
静态无效显示(ArrayList列表){
对于(int i=0;我为我们提供了一个具有预期结果的示例。希望在recyclerview中显示所选地址的排序列表。(数据应按照地址集合进行排序)我的java代码和数据库屏幕排序已附加以供参考。提前感谢…我想按照地址“集合”的数据库获取列表。(我可以检索和显示数据,但未排序)按哪个属性排序?它在您的recyclerview中如何显示?请查找“收集”列表
public static void main(String[] args) {
AddressModel a1 = new AddressModel("name2", "house2", "city2", "pincod2", "mobile2");
AddressModel a2 = new AddressModel("name1", "house1", "city1", "pincod1", "mobile1");
AddressModel a3 = new AddressModel("name4", "house4", "city4", "pincod4", "mobile4");
AddressModel a4 = new AddressModel("name3", "house3", "city3", "pincod3", "mobile3");
AddressModel a5 = new AddressModel("name0", "house0", "city0", "pincod0", "mobile0");
ArrayList list = new ArrayList<AddressModel>();
list.add(a1);
list.add(a2);
list.add(a3);
list.add(a4);
list.add(a5);
System.out.println("Unsorted list:");
Display(list);
System.out.println("Sorted by name:");
//Sort by name
Comparator<AddressModel> compareByName = (AddressModel am1, AddressModel am2) ->
am1.getName().compareTo( am2.getName());
Collections.sort(list, compareByName);
Display(list);
}
/**
* Print a list
* @param list
*/
static void Display(ArrayList list){
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i).toString());
}
}