2009-02-12 8 views
1

Ok, j'ai été chercher épais et j'ai quelques problèmes pour implémenter un BaseAdapter.Android: BaseAdapter comment?

J'ai été en mesure de mettre en œuvre un adaptateur de curseur simple http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html selon l'exemple ci-dessus.

Il y a un très bon exemple BaseAdapter ici: List14 google example

Je suis désireux de créer ma propre liste en utilisant l'adaptateur BaseAdapter pour afficher un listView, avec plusieurs éléments d'une base de données. Je sais que cela peut être fait en utilisant le Simple Cursor Adapter, mais je cherche à gérer les lignes différemment, donc je veux être capable de dessiner chaque ligne en remplaçant getView. Les données seraient tirées d'un curseur.

Je sais que ce code est moche pour accéder aux données du curseur, mais en supposant que j'ai rempli un curseur. Quelles suggestions avez-vous à ce sujet si la colonne 8 contient l'identifiant de la ressource image. :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    cursor.moveToPosition(position); 
    ImageView i = new ImageView(mContext); 
    i.setImageResource(cursor.getShort(8)); 
    i.setAdjustViewBounds(true); 
    i.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

    return i; 
} 

Avez-vous de bons exemples d'un BaseAdapter dessiné à l'aide d'un curseur?

+0

Pourriez-vous fournir un peu plus de détails sur ce que vous essayez d'accomplir/ce qui ne fonctionne pas comme prévu. Que fait le code que vous avez montré lorsque vous l'exécutez? En quoi est-ce différent de ce que vous essayez de faire? –

+0

En fait, après quelques heures de fouilles, je pense que je l'ai eu à travailler d'une certaine façon. Mon plus gros problème est que si je supprime un élément d'une ligne, ma listview ne se met pas à jour, même avec mAdapter.notifiyDataSetChanged(); – Chrispix

Répondre

4

Essayez d'appeler notifyDataSetChanged() à partir d'une méthode à l'intérieur du BaseAdapter lui-même.

Voir les méthodes dans List8 of the API Demos comme exemple.

Questions connexes