java - setonitemclicklistener - Android-setAdapter() en AsyncTask
recyclerview android studio ejemplo (2)
Necesito llenar el ListView con AsyncTask. Este código funciona, el TextView cambia a "Begin", luego "End". Pero el ListView está en blanco, no se muestra. En el registro veo "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);
}
}
}
Dime, por favor, ¿qué estoy haciendo mal?
Falta una llamada a Adapter.notifyDataSetChanged (). Tu código debería verse como
@Override
protected void onPostExecute(ArrayList<String> result) {
...
lvMain.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
Mira tu código
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);
Establece Ver (diseño) para su actividad. Solo visualiza TextView aquí setContentView(textView);
. No hay ListView lvMain;
en su ContentView cuando configura TextView como ContentView para su Actividad.
Eliminar esta línea
setContentView(textView);
Si todavía no funciona, agrega
textView.invalidate();