2011-09-19 4 views
4

J'ai une listeVoir. Le contenu de listView est stocké dans la liste conservée dans l'adaptateur. Je souhaite ajouter et supprimer un en-tête de cette listeView au clic du bouton. Lorsque j'ajoute un en-tête, je reçois une exception: l'adaptateur est déjà défini. Y a-t-il un autre moyen?ajouter et supprimer un en-tête de cette listeVoir

Répondre

9

Vous devez appeler .addHeader() et .addFooter() avant .setAdapter() sur un ListView. Ma suggestion est à modify your adapter to display a header row as a first row, si nécessaire, et ne pas utiliser .addHeader(). Vous devrez peut-être ajouter un nouveau type de ligne pour cela dans votre adaptateur. En outre, ajoutez des méthodes pour votre adaptateur qui vous permet de masquer/afficher cette ligne d'en-tête, mais n'oubliez pas d'appeler .notifyDatasetChanged() après cela.

2

commencez simplement par définir l'en-tête et le pied de page sur listview puis réglez l'adaptateur.

comme, (Rappelez-vous que je ne vous propose la procédure, les méthodes peuvent être différentes alors que j'écris ici.)

// stuff of header 
listview.addHeaderView(View v); 

//stuff of footer 
listview.addFooterView(View v); 

//stuff of adapter 
listview.setAdapter(mAdapter); 
8

Vous devez définir l'adaptateur après avoir ajouté l'en-tête, comme celui-ci

View header = getLayoutInflater().inflate(R.layout.header, null); 
ListView listView = getListView(); 
listView.addHeaderView(header); 
setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_single_choice, 
       android.R.id.text1, names)); 
Questions connexes