Android Javaスレッドでスピナー用の新しいArrayAdapterを作成する際に問題があります。スレッドにメイン クラスへのリンクがないため、これを機能させることができません。スレッドを使用する代わりに AsyncTask を使用する必要があることをインターネットで見つけましたが、1 つの理由でこれのプリンシパルを取得できません。なので、どうすれば解決できるか教えていただきたいです。
public void connect() throws InterruptedException
{
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet("http://192.168.1.118:8080/quiz/output.php");
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Examine the response status
//Log.i("Info",response.getStatusLine().toString()); Comes back with HTTP/1.1 200 OK
// Get hold of the response entity
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
String result= convertStreamToString(instream);
jsonArray = new JSONArray(result);
instream.close();
}
} catch (Exception e) {
Log.e("Error",e.toString());
}
}
});
Thread thread2 = new Thread(new Runnable(){
@Override
public void run() {
List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
try {
JSONObject item = jsonArray.getJSONObject(i);
String ID = item.getString("groepID");
String groepNaam = item.getString("groepNaam");
Log.e("string", "groepid = " + ID + " " + groepNaam);
} catch (JSONException e) {
e.printStackTrace();
}
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
selectgroep.setAdapter(dataAdapter);
}
});
thread.start();
thread.join();
thread2.start();
}
エラーは次のコードにあります。
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
この問題を解決する方法を知っている人はいますか? どうもありがとう、トーマス・トゥーフト