@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView=(ListView)findViewById(R.id.listView); editText = (EditText)findViewById(R.id.editText); ArrayList<String> books=new ArrayList<>(); ArrayAdapter<String> adapter; adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,books); listView.setAdapter(adapter); //books.add("NEW NEW NEW"); ЭТО РАБОТАЕТ //adapter.notifyDataSetChanged(); new MyAsyncTask().execute(); } class MyAsyncTask extends AsyncTask<String, String, String> { String a, b, answerHTTP; String server = "blabla.net"; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... params) { HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget; try { httpget = new HttpGet(server + "?req=getList"); HttpResponse response = httpclient.execute(httpget); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); answerHTTP = EntityUtils.toString(entity); } } catch (ClientProtocolException e) { } catch (IOException e) { } catch(RuntimeException e){ System.err.println(e.getMessage()); } return null; } @Override protected void onPostExecute(String result) { try { JSONObject jo=new JSONObject(answerHTTP); JSONArray jsonNames=jo.getJSONArray("names"); JSONArray jsonAuthors=jo.getJSONArray("authors"); //editText.setText(jsonNames.getString(0)); for(int i=0;i<jsonNames.length();i++){ books.add("New man"); // ЭТО НЕ РАБОТАЕТ adapter.notifyDataSetChanged(); } } catch (JSONException e) { e.printStackTrace(); } super.onPostExecute(result); } } }
When accessing books from OnPostExecute throws an exception. And when you access books from OnCreate, everything works out correctly.
ActivityfromAsyncTaskis bad. - Suvitruf ♦