**配列アダプターのスレッド外の stringArray にアクセスする方法。次のコードでは、以下の配列アダプタで受け入れられるスレッド内で stringArray が宣言されています。
コードを実行しようとすると、配列アダプターに null 配列を提供する null 例外がスローされます。( ...マークされ たコードに焦点を当ててください)
source = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1)
dest = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView2);
readStopName();
**adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,stringArray);**
//how to access the stringArray outside a Thread in array adapter
source.setAdapter(adapter);
dest.setAdapter(adapter);
source.setThreshold(2);
dest.setThreshold(2);
addListenerOnButton();
}
public void readStopName()
{
new Thread()
{
public void run()
{
// TODO Run network requests here.
/* try */
try
{
readFeed = builder.toString();
json = new JSONObject(readFeed);
JSONArray jsonArray = new JSONArray(
json.optString("ResultSet"));
System.out.println("OKAY_4!!");
stringArray = new ArrayList<String>();
//JSONArray jsonArray = new JSONArray();
for(int i = 1, count = jsonArray.length(); i< count; i++)
{
try
{
json = jsonArray.getJSONObject(i);
System.out.println("OKAY!!" +json.toString());
**stringArray.add(json.toString());**
//how to access the stringArray outside a Thread in array adapter
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
System.out.println("OKAY!!" + builder.toString());
}