Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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 应用程序崩溃,因为ArrayAdapter的数组为空_Java_Android_Parse Server - Fatal编程技术网

Java 应用程序崩溃,因为ArrayAdapter的数组为空

Java 应用程序崩溃,因为ArrayAdapter的数组为空,java,android,parse-server,Java,Android,Parse Server,我是android编程新手,所以你需要忍受我 我正在尝试从解析服务器检索一个列,并将其显示在ListView中。到目前为止,我已经生成了以下代码,但是我遇到了一个问题。在我的for循环中,它应该从“缺席”类的“名称”列中获取每个项,并将其添加到名为“教师”的ArrayList中 问题是应用程序崩溃,因为数组为空(在日志中打印后),因此无法将其分配给ArrayAdapter。我相信这是因为在arrayadapter代码执行后的一段时间,对象是在后台获取的,这意味着它试图显示一个空数组 我想我需要以

我是android编程新手,所以你需要忍受我

我正在尝试从解析服务器检索一个列,并将其显示在ListView中。到目前为止,我已经生成了以下代码,但是我遇到了一个问题。在我的for循环中,它应该从“缺席”类的“名称”列中获取每个项,并将其添加到名为“教师”的ArrayList中

问题是应用程序崩溃,因为数组为空(在日志中打印后),因此无法将其分配给ArrayAdapter。我相信这是因为在arrayadapter代码执行后的一段时间,对象是在后台获取的,这意味着它试图显示一个空数组

我想我需要以某种方式推迟它——我该怎么做有什么想法吗

onCreate()方法中受影响的代码:

    final ArrayList<String> teachers = new ArrayList<String>();

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Absences");

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if(e == null){

                for(ParseObject object : objects){

                    String name = String.valueOf(object.get("name"));
                    Log.i("teacherName", name);
                    teachers.add(name);

                }

            } else {

                Log.i("Get data from parse", "There was an error getting data!");
                e.printStackTrace();

            }
        }
    });

    Log.i("teacherOutput", teachers.toString());

    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, teachers);

    ListView lv = (ListView)findViewById(R.id.listView);

    lv.setAdapter(arrayAdapter);
final ArrayList teachers=new ArrayList();
ParseQuery=ParseQuery.getQuery(“缺席”);
findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
如果(e==null){
for(ParseObject对象:对象){
String name=String.valueOf(object.get(“name”));
Log.i(“教师姓名”,姓名);
教师。添加(姓名);
}
}否则{
i(“从解析中获取数据”,“获取数据时出错!”);
e、 printStackTrace();
}
}
});
Log.i(“teacherOutput”,teachers.toString());
最终ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,教师);
ListView lv=(ListView)findViewById(R.id.ListView);
低压设置适配器(阵列适配器);

非常感谢

你需要了解的含义

您的代码应该类似于:

    final ListView lv = (ListView) findViewById(R.id.listView);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
                ArrayList<String> teachers = new ArrayList<String>();
                for (ParseObject object : objects) {
                    String name = String.valueOf(object.get("name"));
                    Log.i("teacherName", name);
                    teachers.add(name);
                }
                final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, teachers);
                lv.setAdapter(arrayAdapter);
            } else {
                Log.i("Get data from parse", "There was an error getting data!");
                e.printStackTrace();
            }
        }
    });
final ListView lv=(ListView)findviewbyd(R.id.ListView);
findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
如果(e==null){
ArrayList教师=新建ArrayList();
for(ParseObject对象:对象){
String name=String.valueOf(object.get(“name”));
Log.i(“教师姓名”,姓名);
教师。添加(姓名);
}
最终ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,教师);
低压设置适配器(阵列适配器);
}否则{
i(“从解析中获取数据”,“获取数据时出错!”);
e、 printStackTrace();
}
}
});

我仍然会遇到以下错误:“试图在空对象引用上调用虚拟方法'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'”可能布局文件中没有id为
ListView
ListView
?啊,就是这样-ListView位于错误的布局文件中!非常感谢。