Principiante de Android aquí. Estaba jugando con ListViews, tratando de crearlos dinámicamente en lugar del archivo XML. Observé el siguiente comportamiento extraño en mi código.Crear ListView programmatically
public class SettingsHolder extends Activity {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ListView lv = new ListView(this);
String[] values = new String[10];
for(int i=0;i<10;i++){
values[i] = ""+i;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, values);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//Toast.makeText(getBaseContext(), ""+arg2, Toast.LENGTH_SHORT).show();
Log.d("DEBUG", ""+arg2);
}
});
ll.addView(lv);
setContentView(ll);
}
}
Básicamente, en primer lugar crear un objeto LinearLayout y luego crea un objeto ListView como uno de sus hijos. Observé que no se puede hacer clic en los elementos de la lista así creados. Pero si escribo
setContentView(lv);
en lugar de
setContentView(ll);
los elementos de la lista se puede hacer clic. ¿Alguien puede explicar esto? ¿Cómo puedo hacer clic en los elementos de la lista si tengo que implementar mi clase de la última manera? No quiero ir al modo ListActivity.
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
Su código se ve bien, incluso compilé para estar seguro, pero el OnItemClickListener se ejecuta como prometió ... – Sam
¿Qué ocurre si establece la vista de contenido y luego agrega el listvieww? – Barak
No, todavía no funciona. La lista se muestra bien, pero los elementos de la lista no se pueden hacer clic. – VJune