Java 从具有另一个对象arraylist属性的对象的arraylist获取值
对于我的大学项目,我正在尝试实现一个分区回收视图,分区标题为日期,约会列表为内容,在每一行约会中,我想显示一些字段,我在其中创建了apnmntDetails类,如下所示: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
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));
}