I am triyng to set ListView elements according to read datas from webservice.I use thread to communicate with web service.I took the datas from web service but when I tried to setadapter to listView , ı took fatal exception.What might be cause of this?Here is my code :
First part initialize the listView :
l = (ListView) findViewById(R.id.listView1);
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
getData();
}
};
//Toast.makeText(CardChooseActivity.this, adapter.getItem(position), Toast.LENGTH_SHORT).show();
(new Thread(runnable)).start();
and the second part (getData method inside Runnable Thread) :
JSONArray jArray = new JSONArray(successMessage);
String[] s = new String[jArray.length()];
for (int i = 0; i < jArray.length(); i++)
{
JSONObject json_data = jArray.getJSONObject(i);
s[i]=json_data.getString("id");
System.out.println("String inside : " + s[i]);
//data.add(json_data.getString("id"));
}
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, s);
l.setAdapter(adapter);
and my LogCat :
09-06 07:42:02.347: E/AndroidRuntime(418): FATAL EXCEPTION: Thread-10
09-06 07:42:02.347: E/AndroidRuntime(418): android.view.ViewRoot$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewRoot.checkThread(ViewRoot.java:2802)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewRoot.focusableViewAvailable(ViewRoot.java:1596)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:451)
09-06 07:42:02.347: E/AndroidRuntime(418): at android.view.View.setFlags(View.java:4474)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.view.View.setFocusableInTouchMode(View.java:3104)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.widget.AdapterView.checkFocus(AdapterView.java:694)
09-06 07:42:02.347: E/AndroidRuntime(418): at
android.widget.ListView.setAdapter(ListView.java:437)
09-06 07:42:02.347: E/AndroidRuntime(418): at
com.example.example.CardChooseActivity.getData(CardChooseActivity.java:166)
09-06 07:42:02.347: E/AndroidRuntime(418): at
com.example.example.CardChooseActivity.access$0(CardChooseActivity.java:122)
09-06 07:42:02.347: E/AndroidRuntime(418): at
com.example.example.CardChooseActivity$1.run(CardChooseActivity.java:73) 09-06 07:42:02.347: E/AndroidRuntime(418): at java.lang.Thread.run(Thread.java:1096)
Thanks in advance.