2011-09-16 5 views
2

J'utilise donc SimpleCursorAdapter pour adapter les données de SQLite à ListView. Appelons cette base de données testData. Une de mes colonnes dans testData enregistre true ou false avec 0 ou 1. Puis-je faire en sorte que la listview affiche une image différente pour chaque élément selon que cette ligne a 0 ou 1?Android SimpleCursorAdapter - Ajout d'images conditionnelles

C'est l'adaptateur que j'utilise.

ListAdapter adapter = new SimpleCursorAdapter(
this, 
android.R.layout.two_line_list_item, 
mCursor,            
new String[] {testData.DATE1, testData.NAME1},   
new int[] {android.R.id.text1, android.R.id.text2}); 

Répondre

4

J'ai créé un SimpleCursorAdapter personnalisé:

public class MySimpleCursorAdapter extends SimpleCursorAdapter { 

    public MySimpleCursorAdapter(Context context, int layout, Cursor cur, 
      String[] from, int[] to) { 
     super(context, layout, cur, from, to); 
    } 

    @Override public void setViewImage(ImageView iv, String text) 
    { 
     if (text.equals("0")) { 
      iv.setImageResource(R.drawable.new1); 
     } 
     else { 
      iv.setImageResource(R.drawable.check1); 
     } 
    } 

} 

Dans mon ListActivity je lie le champ de texte dans la base de données à l'ID de ressource d'image. Dans votre exemple, cela ressemblerait à ceci:

ListAdapter adapter = new MySimpleCursorAdapter(
    this, 
    android.R.layout.two_line_list_item, 
    mCursor,            
    new String[] {testData.DATE1, testData.NAME1},   
    new int[] {android.R.id.text1, android.R.id.image1}); // Note: replace text2 with image1 

I.e. Si le champ de texte "Nom1" dans votre base de données contient "0", l'image "nouveau1" sera affichée dans le ListView, et si elle a une autre valeur, "check1" sera affiché.

Questions connexes