2010-07-29 29 views
0

J'ai vu cette question posée auparavant mais il semble que la réponse peut être périmée.En changeant src imageview basé sur le champ de chaîne de sqlite

Je tire une valeur numérique d'un spinner et le stocke dans une base de données sqlite sous la forme d'une chaîne. J'ai une imageview placé dans le fichier xml de ligne. Je suis sûr de créer une sorte d'adaptateur est impliqué. Comment puis-je modifier la source d'imageview en fonction de la valeur de la chaîne de ma base de données?

Voici ce que j'ai maintenant. l'imageview src est statique et l'id est situé dans la mise en page xml.

``

private void fillData() {

 String journalId = ((resource) this.getApplication()).getjournalId(); 

     Cursor notesCursor = mDbHelper.fetchAllPlaces(journalId); 
     startManagingCursor(notesCursor); 
      String[] from = new String[]{journalDbAdapter.KEY_JOURNAL_NAME, journalDbAdapter.KEY_PLACE 
        , journalDbAdapter.KEY_DATE}; 
     int[] to = new int[]{R.id.placedetail1, R.id.placedetail2, R.id.placedetail3}; 
      SimpleCursorAdapter notes = 
      new SimpleCursorAdapter(this, R.layout.placedetailrow, notesCursor, from, to); 
     setListAdapter(notes); 

    }`` 

i ont une KEY_TEMP de champ supplémentaire, il aura une valeur si une chaîne (0 ou 1 ou 2 ou 3). Je veux changer le src imageview sur chaque cas.

Répondre

0

J'ai fini par créer ma propre carte de curseur: Voici la partie qui récupère la valeur de la base de données et utilise une instruction switch pour définir l'image.

 
int healthCol = c.getColumnIndex(journalDbAdapter.KEY_HEALTH); 
     int health = c.getInt(healthCol); 
     ImageView health_img = (ImageView) v.findViewById(R.id.cross); 
     switch(health) { 
     case 0: 
      health_img.setImageResource(R.drawable.cross); 
      break; 
     case 1: 
      health_img.setImageResource(R.drawable.cross1); 
     break; 
     case 2: 
      health_img.setImageResource(R.drawable.cross2); 
      break; 
     case 3: 
      health_img.setImageResource(R.drawable.cross3); 
      break; 
     }