studio setonitemclicklistener recyclerview example ejemplo java android android-listview android-asynctask android-adapter

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();