Principiante di Android qui. Stavo giocando con ListViews, cercando di crearli dinamicamente al posto del file XML. Osservo il seguente comportamento strano nel mio codice.Creazione di ListView a livello di programmazione
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);
}
}
Fondamentalmente per prima cosa creo un oggetto LinearLayout e quindi creo un oggetto ListView come uno dei suoi figli. Ho osservato che le voci dell'elenco così create non sono selezionabili. Ma se scrivo
setContentView(lv);
invece di
setContentView(ll);
le voci di elenco sono cliccabili. Qualcuno può spiegare questo? Come faccio a rendere selezionabili gli elementi della lista se devo implementare la mia classe in questo modo? Non voglio andare in modalità 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>
Il tuo codice sembra buono, l'ho anche compilato per essere sicuro, ma l'OnItemClickListener viene eseguito come promesso ... – Sam
Cosa succede se imposti la visualizzazione del contenuto e poi aggiungi la listvieww? – Barak
No, ancora non funziona. L'elenco viene visualizzato correttamente ma gli elementi dell'elenco non sono selezionabili. – VJune