2010-02-11 12 views

Respuesta

54

Si usted tiene un diseño xml para la actividad que incluye una vista de lista como esta

<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="fill_parent" 
    android:layout_weight="fill_parent" 

Luego, en su onCreate usted podría tener algo como esto

setContentView(R.layout.the_view); 
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, myList); 
ListView lv = (ListView)findViewById(android.R.id.list); 
lv.setAdapter(adapter); 
lv.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> a, View v,int position, long id) 
    { 
      Toast.makeText(getBaseContext(), "Click", Toast.LENGTH_LONG).show(); 
     } 
}); 
+4

¿Cómo y dónde definir el método OnItemClick? –

+3

No hay una definición aquí por 'adapter' que sería útil – Webnet

+1

@PascalKlein de ella es una función de anulación –

1

También podría Haga referencia a su diseño, instanciar un objeto de diseño de su código y luego compilar ListView en Java. Esto le proporciona cierta flexibilidad en términos de establecer la altura y el ancho dinámicos en el tiempo de ejecución.

11

El siguiente crea un ListView mediante programación sencilla:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String[] myList = new String[] {"Hello","World","Foo","Bar"};    
     ListView lv = new ListView(this); 
     lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myList)); 
     setContentView(lv); 
} 
+0

Hola Cchenesson ... cuando sigo este código, obtengo una" fuente de edición "en mi Eclipse (lo que significa que no funciona). ¿Por qué es eso? – TIMEX

+0

Weird - Creé un nuevo pryecto para Android, copié y pegué lo anterior, ejecútelo sin ningún problema. ¿Puedes publicar el código completo para la actividad? ¿Dónde ves que "Editar fuente" en Eclipse? – ccheneson

+0

¿Es este el problema que tienes? http://android.opensourceror.org/2010/01/18/android-source/ – ccheneson

28

Incluir el siguiente recurso en su res/layout archivo/main.xml:

<ListView 
    android:id="@+id/id_list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

your_class.java

import android.widget.ListView; 
import android.widget.ArrayAdapter; 

public class your_class extends Activity 
{ 
    private ListView m_listview; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    m_listview = (ListView) findViewById(R.id.id_list_view); 

    String[] items = new String[] {"Item 1", "Item 2", "Item 3"}; 
    ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 

    m_listview.setAdapter(adapter); 
    } 
} 
+0

gracias, muy útil. – MaKo

+0

Gracias! ¡¡resolviste mi problema !!! – Grant

1

incluye el siguiente archivo de recursos en res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

     <ListView 
     android:id="@+id/listView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     </ListView> 
</RelativeLayout> 

MainActivity.java

public class MainActivity extends Activity { 
ListView listView; 
String[] listPlanet={"mercury","Venus","Mars","Saturn","Neptune"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    listView = (ListView)findViewById(R.id.listView)); 

    ArrayAdapter<String> adapter = 
    new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listPlanet); 

    listview.setAdapter(adapter); 

} 

} 
Cuestiones relacionadas