Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从具有另一个对象arraylist属性的对象的arraylist获取值_Java_Android_Arraylist - Fatal编程技术网

Java 从具有另一个对象arraylist属性的对象的arraylist获取值

Java 从具有另一个对象arraylist属性的对象的arraylist获取值,java,android,arraylist,Java,Android,Arraylist,对于我的大学项目,我正在尝试实现一个分区回收视图,分区标题为日期,约会列表为内容,在每一行约会中,我想显示一些字段,我在其中创建了apnmntDetails类,如下所示: public class apnmtDetails { private String BarberName; private String Barbershop; private String ServiceName; private String ServiceType; private String Servicestat

对于我的大学项目,我正在尝试实现一个分区回收视图,分区标题为日期,约会列表为内容,在每一行约会中,我想显示一些字段,我在其中创建了apnmntDetails类,如下所示:

public class apnmtDetails {
private String BarberName;
private String Barbershop;
private String ServiceName;
private String ServiceType;
private String Servicestatus;
private String ServicePrice;
private String ServiceTime;

public apnmtDetails(String barberName, String barbershop,
                    String serviceName, String serviceType,
                    String servicestatus, String servicePrice,
                    String serviceTime) {
    BarberName = barberName;
    Barbershop = barbershop;
    ServiceName = serviceName;
    ServiceType = serviceType;
    Servicestatus = servicestatus;
    ServicePrice = servicePrice;
    ServiceTime = serviceTime;
}

public String getBarberName() {
    return BarberName;
}

public void setBarberName(String barberName) {
    BarberName = barberName;
}

public String getBarbershop() {
    return Barbershop;
}

public void setBarbershop(String barbershop) {
    Barbershop = barbershop;
}

public String getServiceName() {
    return ServiceName;
}

public void setServiceName(String serviceName) {
    ServiceName = serviceName;
}

public String getServiceType() {
    return ServiceType;
}

public void setServiceType(String serviceType) {
    ServiceType = serviceType;
}

public String getServicestatus() {
    return Servicestatus;
}

public void setServicestatus(String servicestatus) {
    Servicestatus = servicestatus;
}

public String getServicePrice() {
    return ServicePrice;
}

public void setServicePrice(String servicePrice) {
    ServicePrice = servicePrice;
}

public String getServiceTime() {
    return ServiceTime;
}

public void setServiceTime(String serviceTime) {
    ServiceTime = serviceTime;
}

@Override
public String toString() {
    return "apnmtDetails{" +
            "BarberName='" + BarberName + '\'' +
            ", Barbershop='" + Barbershop + '\'' +
            ", ServiceName='" + ServiceName + '\'' +
            ", ServiceType='" + ServiceType + '\'' +
            ", Servicestatus='" + Servicestatus + '\'' +
            ", ServicePrice='" + ServicePrice + '\'' +
            ", ServiceTime='" + ServiceTime + '\'' +
            '}';
}}
之后,我创建了一个section类,它保存sectionName和sectionItem字段,其中sectionItem是apnmntDetails类的arraylist,代码如下:

public class Section {

private String SectionName;
private ArrayList<apnmtDetails> SectionItem;

public Section(String sectionName, ArrayList<apnmtDetails> sectionItem) {
    SectionName = sectionName;
    SectionItem = sectionItem;
}

public String getSectionName() {
    return SectionName;
}

public void setSectionName(String sectionName) {
    SectionName = sectionName;
}

public ArrayList<apnmtDetails> getSectionItem() {
    return SectionItem;
}

public void setSectionItem(ArrayList<apnmtDetails> sectionItem) {

    this.SectionItem.addAll(sectionItem);
}

@Override
public String toString() {
    return "Section{" +
            "SectionName='" + SectionName + '\'' +
            ", SectionItem=" + SectionItem +
            '}';
}}
firebase不是问题,因为该值已正确检索,如带有apnmntList标记的logcat中所示,但在使用servicelist arraylist打印该值时,该值未显示


我对Java还是有点陌生和陌生,因此,如果有人能帮我指出我的错误,我将不胜感激

您应该调用
sectionList.add(newsection(document.getString(“date”),apnmntList))内部onComplete()回调方法。因为这是一个回调方法,所以在回调代码块之后,该方法被挂起,控件跳转以执行代码。在for循环之前,还应该初始化apnmntList,因为必须为每个部分保存新列表。
我已经对onComplete()方法进行了更改,请看一下:

@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
    apnmntList = new ArrayList();
    for (DocumentSnapshot querysnapshot: task.getResult()){
        apnmtDetails details = new apnmtDetails(querysnapshot.getString("barber"),
                querysnapshot.getString("barber"),
                querysnapshot.getString("name"),
                querysnapshot.getString("type"),
                querysnapshot.getString("status"),
                querysnapshot.getString("price"),
                querysnapshot.getString("time slot"));

        apnmntList.add(details);
        Log.i("apnmntList", apnmntList.toString());

    }
    sectionList.add(new Section(document.getString("date"),apnmntList));
}
@覆盖
未完成的公共void(@NonNull任务){
apnmntList=newarraylist();
对于(DocumentSnapshot querysnapshot:task.getResult()){
apnmtDetails details=新的apnmtDetails(querysnapshot.getString(“barber”),
querysnapshot.getString(“理发师”),
querysnapshot.getString(“名称”),
querysnapshot.getString(“类型”),
querysnapshot.getString(“状态”),
querysnapshot.getString(“价格”),
getString(“时隙”);
apnmntList.add(详细信息);
Log.i(“apnntlist”,apnntlist.toString());
}
sectionList.add(新的部分(document.getString(“日期”),apnmntList));
}

您好,先生,我尝试实施您建议的修复方案,当我将logcat放入for循环时,我可以打印serviceList,但当我尝试在onComplete外部打印时,结果是空的,我如何解决这个问题?它在onComplete()内部正确打印吗?请看,回调方法类似于异步过程,所以您不应该在onComplete之外准备sectionList。好的,先生,非常感谢您的帮助
2021-03-04 14:57:06.748 4678-4678/com.example.homebarberv1 I/sectionList: Section{SectionName='4/AUG/2021', SectionItem=[]}
2021-03-04 14:57:07.029 4678-4678/com.example.homebarberv1 I/apnmntList: [apnmtDetails{BarberName='vAN7LYKoddRX2cQlogQtStOueKt2', Barbershop='vAN7LYKoddRX2cQlogQtStOueKt2', ServiceName='normal cut', ServiceType='Normal', Servicestatus='On hold', ServicePrice='4', ServiceTime='07:00 to 07:30'}]
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
    apnmntList = new ArrayList();
    for (DocumentSnapshot querysnapshot: task.getResult()){
        apnmtDetails details = new apnmtDetails(querysnapshot.getString("barber"),
                querysnapshot.getString("barber"),
                querysnapshot.getString("name"),
                querysnapshot.getString("type"),
                querysnapshot.getString("status"),
                querysnapshot.getString("price"),
                querysnapshot.getString("time slot"));

        apnmntList.add(details);
        Log.i("apnmntList", apnmntList.toString());

    }
    sectionList.add(new Section(document.getString("date"),apnmntList));
}