Setear valores extraidos de un arrayList en un array de String para llenar un combo
Hola gente.
Necesito ayuda en tratar de extraer los valores de un arrayList y setearlos en un array de String para luego asi rellenar un combo.
Espero me puedan ayudar.
Este es el codigo de mi clase, q consume un servicio web del cual extrae los valores (paises)...
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.ListPreference;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.efisat.ejercombopaises.Pais;
import com.efisat.controlador.Controlador;
public class MainActivity extends Activity implements OnClickListener {
private Spinner cmbPaises;
private Button btnEnviar;
private TextView textResultado;
public static String[] paises;
private static Context mContext;
private int proceso;
private ProgressDialog dialog_confirmar;
public static ArrayList<Pais> arrayList_Pais;
public static String mensaje = "";
public static final String ACTION_NAME = "efisat";
public static boolean existeError = false;
private Controlador ctrlServidor;
private String countries;
private final String KEYPAIS = "usuario_pais";
private static SharedPreferences sp;
// control general
public static boolean enProceso = false;
// proceso control principal
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialog = new ProgressDialog(this);
dialog.setMessage("Descargando...");
dialog.setTitle("Progreso");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setCancelable(false);
new TareaSegundoPlano().execute();
}
public void initialize() {
cmbPaises = (Spinner) findViewById(R.id.cmbPaises);
btnEnviar = (Button) findViewById(R.id.btnEnviar);
textResultado = (TextView) findViewById(R.id.textResultado);
for (int i = 0; i < arrayList_Pais.size(); i++) {
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item,
paises);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
try {
cmbPaises.setAdapter(adapter);
} catch (Exception e) {
e.printStackTrace();
}
cmbPaises.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
// textResultado.setText("Has seleccionado: " +
// paises[position]);
// countries = paises[position];
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
textResultado.setText("Ningún dato seleccionado");
}
});
btnEnviar.setOnClickListener(this);
}
private int cargarRecursoPais() {
@SuppressWarnings("rawtypes")
Vector nombrePais;
@SuppressWarnings("rawtypes")
Vector contenidoPais;
nombrePais = new Vector();
contenidoPais = new Vector();
String resultadoPais = "";
nombrePais.addElement("funcion");
contenidoPais.addElement("Paises");
resultadoPais = ctrlServidor.comunicacionConServidor(nombrePais,
contenidoPais);
int proceso = ProcesaRecursos.procesarRecurso(resultadoPais,
ProcesaRecursos.PAIS, mContext);
return proceso;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnEnviar:
Intent intent = new Intent(getBaseContext(), Resultado.class);
intent.putExtra("PAISES", proceso);
startActivity(intent);
break;
}
}
// Clase interna que extiende de AsyncTask
public class TareaSegundoPlano extends AsyncTask<Void, Void, Void> {
// Método que se ejecutará antes de la tarea en segundo plano,
// normalmente utilizado para iniciar el entorno gráfico
protected void onPreExecute() {
dialog.setProgress(0);
dialog.setMax(100);
// Mostramos el diálogo antes de comenzar
// barraProgreso.setProgress(0);//Ponemos la barra de progreso a 0
// barraProgreso.setMax(60);//El máximo de la barra de progreso son
// 60, de los 60 segundo que va a durar la tarea en segundo plano.
dialog.show();
}
// Este método se ejecutará después y será el que ejecute el código en
// segundo plano
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int proceso;
proceso = cargarRecursoPais();
if (proceso == 0) {
}
// Al llegar aquí, no devolvemos nada y acaba la
// tarea
// en segundo plano y se llama al método
// onPostExecute().
return null;
}
protected void onProgressUpdate(Void... values) {
// barraProgreso.setProgress(progreso);// Actualizamos la barra de
// progreso con los segundos que vayan.
}
protected void onPostExecute(Void result) {// A este método se le llama
// cada vez que termine la
// tarea en segundo plano.
initialize();
Toast.makeText(MainActivity.this, "Tarea finalizada",
Toast.LENGTH_LONG).show();// Nos muestra una notificación
// informando de que la tarea en
// segundo plano ha finalizado
try {
dialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Saludos
- Inicie sesión o regístrese para enviar comentarios
Puedes experimentar con
Puedes experimentar con esto:
a) A tu clase Pais agrega un metodo parecido a:
public String toString(){
return name;
}
b) Crea un ArrayAdapter con un ArrayList (O cualquier lista que herede de collection) del conjunto de objetos Pais.
http://developer.android.com/reference/android/widget/ArrayAdapter.html
http://developer.android.com/reference/java/util/Collection.html
c) Agregalo a tu combo.
d) verifica que funcione