Android - setAdapter() in AsyncTask
android, android-adapter, android-asynctask, android-listview, java
Solution
Look at your code
textView.setText("End");
setContentView(textView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, result_arr);
lvMain.setAdapter(adapter);
You set View (layout) for your activity. You only display TextView here `setContentView(textView);`. There's no `ListView lvMain;` in your ContentView when you set TextView as a ContentView for your Activity.
Delete this line
setContentView(textView);
If it still isn't working add
textView.invalidate();
Problem
I need to fill the ListView with AsyncTask. This code works, the TextView changes to "Begin", then "End". But the ListView is blank, not showing. In the log I see "array = 3". ``` package a.test3; import java.util.ArrayList; import a.test3.MainActivity; import a.test3.R; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { GrabURL mt; TextView textView; ListView lvMain; ArrayList<String> result_arr = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = new TextView(this); lvMain = (ListView) findViewById(R.id.listView1); mt = new GrabURL(); mt.execute(); } public class GrabURL extends AsyncTask<Void, Void, ArrayList<String>> { @Override protected void onPreExecute() { super.onPreExecute(); textView.setText("Begin"); setContentView(textView); } @Override protected ArrayList<String> doInBackground(Void... params) { result_arr.add("a"); result_arr.add("b"); result_arr.add("c"); return result_arr; } @Override protected void onPostExecute(ArrayList<String> result) { super.onPostExecute(result); Log.d("info", "array = " + result.size()); textView.setText("End"); setContentView(textView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, result); lvMain.setAdapter(adapter); } } } ``` Tell me, please, what am I doing wrong?