Android 在Parse中检索存储在数组中的值并在listView中显示它们

Android 在Parse中检索存储在数组中的值并在listView中显示它们,android,listview,parse-platform,android-arrayadapter,android-parsequeryadapter,Android,Listview,Parse Platform,Android Arrayadapter,Android Parsequeryadapter,因此,我试图检索Parse中PrescriptionArray列中存储的值,这是一个数组。然后我想在ListView中显示这些值。任何帮助都将不胜感激 ParseQuery<ParseObject> query = ParseQuery.getQuery("PrescriptionObject"); query.whereEqualTo("MedicalID", etMedicalID.getText().toString()); query.findInBack

因此,我试图检索Parse中PrescriptionArray列中存储的值,这是一个数组。然后我想在ListView中显示这些值。任何帮助都将不胜感激

  ParseQuery<ParseObject> query = ParseQuery.getQuery("PrescriptionObject");
    query.whereEqualTo("MedicalID", etMedicalID.getText().toString());
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> prescriptionList, ParseException e) {

            if (e == null) {

                final List<String> arrayprescription = new ArrayList<String>();

                for (int i = 0; i < prescriptionList.size(); i++) {
                    ParseObject p = prescriptionList.get(i);
                    if (p.getList("PrescriptionArray") != null) {


                        arrayprescription.addAll(Arrays.asList("PrescriptionArray"));
                        ArrayAdapter adapter = new ArrayAdapter(PrescriptionsArrayActivity.this, android.R.layout.simple_list_item_1, arrayprescription);
                        lvPrescriptions.setAdapter(adapter);
                    }
ParseQuery query=ParseQuery.getQuery(“处方对象”);
query.whereEqualTo(“MedicalID”,etMedicalID.getText().toString());
findInBackground(新的FindCallback(){
公共作废完成(列出处方列表,e){
如果(e==null){
最终列表ArrayDescription=new ArrayList();
对于(int i=0;i
尝试将listview和适配器的设置移到解析查询之外,然后将每个项添加到适配器。另外,不知道为什么要在查询中创建/设置列表

ArrayAdapter adapter = new ArrayAdapter(PrescriptionsArrayActivity.this, android.R.layout.simple_list_item_1, arrayprescription);
lvPrescriptions.setAdapter(adapter);    

        ParseQuery<ParseObject> query = ParseQuery.getQuery("PrescriptionObject");
            query.whereEqualTo("MedicalID", etMedicalID.getText().toString());
            query.findInBackground(new FindCallback<ParseObject>() {
                public void done(List<ParseObject> prescriptionList, ParseException e) {

                    if (e == null) {

                        final List<String> arrayprescription = new ArrayList<String>();

                        for (int i = 0; i < prescriptionList.size(); i++) {
                            ParseObject p = prescriptionList.get(i);

    adapter.add(stateList.get(i));




                            }
ArrayAdapter=新的ArrayAdapter(说明ArrayActivity.this,android.R.layout.simple\u list\u item\u 1,ArrayDescription);
LV处方。设置适配器(适配器);
ParseQuery=ParseQuery.getQuery(“处方对象”);
query.whereEqualTo(“MedicalID”,etMedicalID.getText().toString());
findInBackground(新的FindCallback(){
公共作废完成(列出处方列表,e){
如果(e==null){
最终列表ArrayDescription=new ArrayList();
对于(int i=0;i
尝试将listview和适配器的设置移到解析查询之外,然后将每个项添加到适配器。另外,不知道为什么要在查询中创建/设置列表

ArrayAdapter adapter = new ArrayAdapter(PrescriptionsArrayActivity.this, android.R.layout.simple_list_item_1, arrayprescription);
lvPrescriptions.setAdapter(adapter);    

        ParseQuery<ParseObject> query = ParseQuery.getQuery("PrescriptionObject");
            query.whereEqualTo("MedicalID", etMedicalID.getText().toString());
            query.findInBackground(new FindCallback<ParseObject>() {
                public void done(List<ParseObject> prescriptionList, ParseException e) {

                    if (e == null) {

                        final List<String> arrayprescription = new ArrayList<String>();

                        for (int i = 0; i < prescriptionList.size(); i++) {
                            ParseObject p = prescriptionList.get(i);

    adapter.add(stateList.get(i));




                            }
ArrayAdapter=新的ArrayAdapter(说明ArrayActivity.this,android.R.layout.simple\u list\u item\u 1,ArrayDescription);
LV处方。设置适配器(适配器);
ParseQuery=ParseQuery.getQuery(“处方对象”);
query.whereEqualTo(“MedicalID”,etMedicalID.getText().toString());
findInBackground(新的FindCallback(){
公共作废完成(列出处方列表,e){
如果(e==null){
最终列表ArrayDescription=new ArrayList();
对于(int i=0;i
public void done(列表prescriptionList,parsee){
如果(e==null){
最终列表ArrayDescription=new ArrayList();
for(ParseObject p:prescriptionList){
if(p.getList(“处方数组”)!=null){
对于(处方对象:p.getList(“处方阵列”)){
add(prescriptionObject.getPropertyName());
}
}
}
ArrayAdapter=新的ArrayAdapter(处方ArrayActivity.this,android.R.layout.simple\u list\u item\u 1,ArrayDescription);
LV处方。设置适配器(适配器);
}
}
请注意,
PrescriptionArray
应该包含一个对象列表,您可以在其中使用对象的getter方法访问对象的属性(如果是Json,则直接获取属性),因为您使用的是ArrayAdapter而不是自己创建的,所以必须使用
字符串
对象填充ArrayAdapter数据。

公共作废完成(列表处方列表,ParseException e){
如果(e==null){
最终列表ArrayDescription=new ArrayList();
for(ParseObject p:prescriptionList){
if(p.getList(“处方数组”)!=null){
对于(处方对象:p.getList(“处方阵列”)){
add(prescriptionObject.getPropertyName());
}
}
}
ArrayAdapter=新的ArrayAdapter(处方ArrayActivity.this,android.R.layout.simple\u list\u item\u 1,ArrayDescription);
LV处方。设置适配器(适配器);
}
}

请注意,
PrescriptionArray
应该包含一个对象列表,您可以在其中使用对象的getter方法访问对象的属性(如果是Json,则直接获取属性),然后因为您使用的是ArrayAdapter,而不是创建自己的,所以必须使用
字符串
对象填充ArrayAdapter数据。

您不认为必须在UI线程上调用setAdapter函数吗。以及为什么在For循环中调用setAdapter。谢谢,我没有发现这一点。您在UI线程上的意思是什么速率活动??你不认为你必须在UI线程上调用setAdapter函数吗?以及你为什么在For循环中调用setAdapter。谢谢,不,我没有发现这一点。你说的在UI线程上是什么意思?这是一个单独的活动吗?非常感谢,我几乎可以让它工作了!!但是它似乎显示了列名“PrescriptionArray”与数组的内容相反…有什么建议吗?您必须创建自定义适配器或访问
PrescriptionArray
对象的属性。我将编辑我的答案,使用
propertyName
作为要显示的对象属性非常感谢