我在Parse.com上有两个课程
1-名为 HospitalAppointment ,其中包含约会列表,每个对象都有(AppointmentDate(日期),DoctorFile(指针(指向医生))等等......)
2-班叫医生(有医生姓名(字符串),身份证...其他信息)
我在android studio中有2个java类
1- 我的主要活动在此课程中我会查询类HospitalAppointment
ParseQuery<ParseObject> doctors = ParseQuery.getQuery("HospitalAppointment");
doctors.whereEqualTo("AppointmentDate",startDate);
doctors.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> status, com.parse.ParseException e) {
if (status == null) {
Log.d("score", "no doctor available: ");
} else {
mStatus = status;
DoctorAdapter adapter = new DoctorAdapter(getListView().getContext(), mStatus);
setListAdapter(adapter);
}
}
});
在DoctorAdapter活动中,我为listview编写函数是问题
public class DoctorAdapter extends ArrayAdapter<ParseObject> {
protected Context mContext;
protected List<ParseObject> mStatus;
public DoctorAdapter(Context context, List<ParseObject> status) {
super(context, R.layout.doctor_listadapter, status);
mContext = context;
mStatus = status;
}
//getview used to inflate each row
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.doctor_listadapter, null);
holder = new ViewHolder();//create new view
holder.mDocName = (TextView) convertView.findViewById(R.id.doctorName);//very imp to convertview
holder.mDocId = (TextView) convertView.findViewById(R.id.doctorId);
convertView.setTag(holder);//holder as parameter
} else {
holder = (ViewHolder) convertView.getTag();
}
ParseObject statusObject = mStatus.get(position);//postition of that row
ParseObject getDoctorID = statusObject.getParseObject("DoctorName");
String docId= getDoctorID.getObjectId();
holder.mDocId.setText(docId);
*// here is the problem I cannot retrive the Pointer data like Doctor name*
return convertView;
}
public static class ViewHolder {
TextView mDocId;
TextView mDocName;
}}
我检索对象Id但是指针中的问题我无法从指针获取任何数据我尝试查询方法我称之为“医生”的类名,我确实找到了“医生的ID来获取他的名称,但它不起作用
我尝试做Parse对象,但是我得到了这个对象,但也没有用?
我希望你能帮助我
答案 0 :(得分:1)
试试这个
ParseObject hospitalAppointment = mStatus.get(position);//postition of that row
ParseObject doctor = hospitalAppointment.getParseObject("columnName");
doctor.fetchIfNeededInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject doctor, ParseException e) {
String docId= doctor.getObjectId();
// Do something with your new title variable
}
});
答案 1 :(得分:1)
我遇到了同样的问题。事实上,我有一个类的层次结构,如ClassA
有一个字段listPointerB
,其中有一个指向ClassB
的指针列表,ClassB
有一个字段listPointerC
有一个指向ClassC
的指针列表。
如果我想获取所有数据,请执行以下操作。
ParseQuery<ClassA> query = ParseQuery.getQuery(ClassA.class);
query.include("modules");
query.include("modules.lessons");
query.findInBackground(...);
如果你查看include()
方法的文档,它说你可以使用'.'
提供字段的嵌套,这对我来说很好。令人惊奇的是,它也适用于列表。它基本上做的是,当你说你想要include
一个字段时,它会获取该对象并将其放入有效载荷中。
对于您的情况,您应该这样做:
ParseQuery<ParseObject> doctors = ParseQuery.getQuery("HospitalAppointment");
doctors.whereEqualTo("AppointmentDate",startDate);
doctors.include("DoctorFile");
doctors.findInBackground(...);