16
Ho una vista elenco che viene popolata tramite record dal database. Ora devo rendere visibili alcuni dischi ma non sono disponibili per la selezione, come posso ottenerlo?Come disabilitare gli elementi in una visualizzazione elenco?
Ecco il mio codice
public class SomeClass extends ListActivity {
private static List<String> products;
private DataHelper dh;
public void onCreate(Bundle savedInstanceState) {
dh = new DataHelper(this);
products = dh.GetMyProducts(); /* Returns a List<String>*/
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.myproducts, products));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
Il file di layout myproducts.xml è la seguente:
<?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="wrap_content"
android:padding="10dp"
android:textSize="16sp">
</TextView>
Attenzione a questa soluzione. La documentazione di BaseAdapter afferma quanto segue "Restituisce true se l'elemento nella posizione specificata non è un separatore". Ciò significa che se restituisci false l'elemento è un elemento separatore. Alcuni telefoni potrebbero non disegnare l'androide: divisore tra un oggetto normale e un elemento separatore. – Janusz
Questo è assolutamente vero e mi sono imbattuto in quel problema prima; Ho incluso un divisore nel layout di riga stesso e mostrato/nascosto in getView(), o lasciato gli elementi abilitati ma ho ignorato i clic su di essi e ho impostato uno sfondo che non ha uno stato premuto in modo che non guardino cliccabile. –
Ottimo per posizionare i divisori "Titolo", in modo da avere sezioni nella tua lista! – htafoya