Android 我需要帮助来显示排序的';文件';数据根据my';收集';将列表放入RecyclerView(检索到的数据未按照列表进行排序,#AskFirebase)

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

我想根据我的列表在RecyclerView中显示已排序的数据(我可以检索数据,但不能根据我的集合列表进行排序)。或者,我在Firestore中已排序的地址集合列表,并想从Firestore文档列表中提取已排序的数据。请查看随附的Firestore数据库图像和java代码以了解详细信息

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