Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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/188.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 无法使用API数据解析ArrayAdapter中的构造函数_Java_Android_Android Arrayadapter - Fatal编程技术网

Java 无法使用API数据解析ArrayAdapter中的构造函数

Java 无法使用API数据解析ArrayAdapter中的构造函数,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,对于一个学校项目,我们正在制作一个基于API的应用程序,现在我们需要从URL获取数据并添加到微调器(下拉列表)中。在获取数据时,一切都正常(我想,甚至还没有测试过),但是使用ArrayAdapter插入数据让我头疼 下面是我的FetchData类: package com.example.prege.randomklasgenerator; import android.app.Activity; import android.os.AsyncTask; import android.widg

对于一个学校项目,我们正在制作一个基于API的应用程序,现在我们需要从URL获取数据并添加到微调器(下拉列表)中。在获取数据时,一切都正常(我想,甚至还没有测试过),但是使用ArrayAdapter插入数据让我头疼

下面是我的FetchData类:

package com.example.prege.randomklasgenerator;

import android.app.Activity;
import android.os.AsyncTask;
import android.widget.ArrayAdapter;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONObject;


private String data = "";
private ArrayList<String> klaslist = new ArrayList<>();

@Override
protected Void doInBackground(Void... voids) {
    try {
        URL url = new URL("http://mgroesink-001-site12.itempurl.com/api/student?studentclass=" + MainActivity.etKlas.getSelectedItem().toString());
        HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
        InputStream inputStream = urlConnection.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

        String jsonstring = bufferedReader.readLine();
        if(jsonstring != null) {
            try {
                JSONArray klassen = new JSONArray(jsonstring);

                for(int i = 0; i < klassen.length(); i++) {
                    String klasnaam = klassen.getString(i);

                    klaslist.add(klasnaam);
                }

                jsonstring = "";
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

protected void onPostExecute(Void aVoid) {
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(, android.R.layout.simple_spinner_item, klaslist);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    MainActivity.etKlas.setAdapter(dataAdapter);
}
}
package com.example.prege.randomklasgenerator;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.widget.ArrayAdapter;
导入android.widget.Toast;
导入org.json.JSONArray;
导入org.json.JSONObject;
私有字符串数据=”;
private ArrayList klaslist=new ArrayList();
@凌驾
受保护的空位背景(空位…空位){
试一试{
URL=新URL(“http://mgroesink-001-site12.itempurl.com/api/student?studentclass=“+MainActivity.etKlas.getSelectedItem().toString());
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
InputStream InputStream=urlConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream));
字符串jsonstring=bufferedReader.readLine();
if(jsonstring!=null){
试一试{
JSONArray klassen=新JSONArray(jsonstring);
对于(int i=0;i

在onPostExecute上,我尝试创建一个ArrayAdapter,但它在需要为其提供上下文的参数上不断给我错误。

您只是缺少了
这个
。这里有逗号,但前面没有

protected void onPostExecute(Void aVoid) {
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(ClassName.this, android.R.layout.simple_spinner_item, klaslist);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    MainActivity.etKlas.setAdapter(dataAdapter);
}
受保护的void onPostExecute(void aVoid){
ArrayAdapter dataAdapter=新的ArrayAdapter(ClassName.this,android.R.layout.simple\u微调器\u项,klaslist);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
MainActivity.etKlas.setAdapter(dataAdapter);
}

希望现在就可以了。

添加您的类名。这个只需添加这个参数即可

protected void onPostExecute(Void aVoid) {
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(FetchData.this, android.R.layout.simple_spinner_item, klaslist);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    MainActivity.etKlas.setAdapter(dataAdapter);
}
受保护的void onPostExecute(void aVoid){
ArrayAdapter dataAdapter=新的ArrayAdapter(FetchData.this,android.R.layout.simple\u微调器\u项,klaslist);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
MainActivity.etKlas.setAdapter(dataAdapter);
}
这肯定对您有用。

**尝试更改此方法**
**Try to change this method**

protected void onPostExecute(Void aVoid) {
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.context, android.R.layout.simple_spinner_item, klaslist);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        MainActivity.etKlas.setAdapter(dataAdapter);
    }
受保护的void onPostExecute(void避免){ ArrayAdapter dataAdapter=新的ArrayAdapter(this.context,android.R.layout.simple\u微调器\u项,klaslist); dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项); MainActivity.etKlas.setAdapter(dataAdapter); }
不一定。在大多数情况下,您可能是对的,但这里的类称为
FetchData
,它可能不是活动;)是的,我把它留空了,因为我不知道把什么放在这里,通常我会把getApplicationContext()放在这里,但不知怎的,我无法访问这个函数
Myclass my = new Myclass(this);
my.execute();
**Try to change this method**

protected void onPostExecute(Void aVoid) {
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.context, android.R.layout.simple_spinner_item, klaslist);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        MainActivity.etKlas.setAdapter(dataAdapter);
    }