2010-04-22 12 views
19

Tengo un servicio web que devuelve una lista de objetos súper simple¿Hay un super sencillo ejemplo de lista/ListAdapter que hay para Android

MiObjeto [] = webServiceCall de datos();

MiObjeto tiene 1 campo quiero mostrar, "Name" (es decir data[0].Name)

¿Cómo puedo convertir esto en una actividad que muestra sólo el nombre de estos objetos en un desplazable listActivity en Android. Me estoy realmente confundido con cursores y no estoy seguro si necesito cursores y yo "No estoy seguro de qué tipo de adaptador para poner en práctica (BaseAdapter, SimpleAdapter etc)

así que supongo que estoy buscando tres cosas,

la actividad, el adaptador y el layout.xml

Sólo tratando de calcular esta materia androide a cabo, sin duda un novato aquí

Respuesta

43

así que creo que lo he descubierto con un poco de inspiración de la respuesta de RobGThai, les dejo el código para que nadie vea, creo que realmente no usamos un adaptador personalizado

Este es el súper ejemplo simple que me ayudó a comenzar, así que una vez que tuve esto, me aseguré de que mi "MyObject" tuviera un método toString() para mostrarlo correctamente en la lista y pasé el arreglo MyObject [] en el "nuevo adaptador ArrayAdapter" de ListItems

FooList.java

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class FooList extends ListActivity { 
    String[] listItems = {"item 1", "item 2 ", "list", "android", "item 3", "foobar", "bar", }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.temp); 
     setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); 
    } 

} 

el xml diseño i utilizado (temp.xml)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListView android:id="@android:id/list" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Empty set" /> 
</LinearLayout> 
+9

No estoy seguro de que necesite este 'temp.xml' ya que está utilizando el elemento de lista incorporado para su actividad. – Tarik

+1

¡Finalmente un ejemplo de vista de lista que se ejecuta! –

+1

Agradable, la mayoría de los tutoriales sobre esto son más grandes de lo que necesitan ser. – superluminary

9

a que su actividad se extiende ListActivity también.

Entonces esto debería ayudarte a comenzar.

Object[] sArray = {"This", "is", 3.5, true, 2, "for", "bla"}; 
ArrayAdapter adp = new ArrayAdapter(this, android.R.layout.simple_list_item_1, sArray); 
setListAdapter(adp); 

Los segundos parámetros se pueden cambiar a su diseño preferido. Ver el documento API para más información.

1

También puede adjuntar un AlertDialog a la ListView cuando el usuario hace clic en un ListItem. Estoy incluyendo un código de trabajo a continuación en caso de que alguien está tratando de lo mismo,

final ListView v = getListView(); 
v.setOnItemClickListener(new OnItemClickListener() { 

public void onItemClick(final AdapterView<?> parentView, View view, int position, 
     long id) { 
    final String fileName = (String) parentView.getItemAtPosition(position); 
    new AlertDialog.Builder(parentView.getContext()).setTitle("Upload").setMessage("Upload " + fileName +"?") 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       //do something here... 
      } 
     }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       di.dismiss();       
      } 
     }).show(); 
} 
}); 

La clave es que usted necesita para pasar contexto de su actividad que encierra al diálogo. Lo descubrí cuando getApplicationContext() falló con un extraño mensaje de error.

Cuestiones relacionadas