IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

[Dev]ListActivity et icones


Sujet :

Composants graphiques Android

  1. #1
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut [Dev]ListActivity et icones
    Bonjour,

    J'ai une activité qui dérive de ListActivity. Je voudrais y faire figurer une icone dépendant d'une info stockée en base de données.

    Pas de problèmes pour la partie BDD, mais là où je bloque c'est pour faire le lien entre mon info en base (valeurs: 1, 2 ou 3 pour faire simple) et l'image que je veux afficher.

    J'ai créé un ViewBinder qui marche niquel pour le texte, mais impossible de récupérer mon ImageView (nullPointerException).

    Voilà l'activité (en tout cas l'appel à un simpleCursorAdapter):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private void fillData(){
    		Cursor c = DBHelper.fetchAllRecipes();
    		startManagingCursor(c);
     
     
    		String[] from = new String[]{RecipeDBAdapter.KEY_NAME};
    		int[] to = new int[]{R.id.text1};
     
     
    		SimpleCursorAdapter r = new SimpleCursorAdapter(this, R.layout.lig_recettes, c, from, to);
    		r.setViewBinder(new RecipeBinder());
     
     
    		setListAdapter(r);
    	}
    et le ViewBinder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class RecipeBinder implements ViewBinder{
    	public boolean setViewValue(View view, Cursor cursor, int columnIndex){
     
                    //ERREUR ICI: NULLPOINTEREXCEPTION
    		ImageView ty = (ImageView)view.findViewById(R.id.type1);
     
     
     
    		TextView nom = (TextView)view.findViewById(R.id.text1);
     
    		int typeIndex = cursor.getColumnIndex(RecipeDBAdapter.KEY_TYPE);
    		int t = cursor.getInt(typeIndex);
     
     
    		/*switch(t){
    		case 1://entrée
    			type.setImageResource(R.drawable.salad);
    			break;
     
    		case 2://plat
    			type.setImageResource(R.drawable.hamburger);
    			break;
    		/*
    		case 3://dessert
    			type.setImageResource(R.drawable.cupcake);
    			break;
    		default:
    			type.setImageResource(R.drawable.salad);
    			break;
     
    		}*/
     
    		ty.setImageResource(R.drawable.hamburger);
     
    		int nameIndex = cursor.getColumnIndex(RecipeDBAdapter.KEY_NAME);
    		nom.setText(cursor.getString(nameIndex));
     
    		return true;
    	}
     
    }
    Dans le doute, voilà lig_recettes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <!-- Une recette en ligne -->
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
     
        <TableLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:stretchColumns="1">
     
        	<TableRow>
            	<ImageView android:id="@+id/type1"
    				android:layout_width="35.0sp"
    				android:layout_height="35.0sp"
    				android:layout_weight="7"/>
     
        		<TextView android:id="@+id/text1"
        			android:layout_width="fill_parent"
        			android:layout_height="fill_parent"
        			android:layout_weight="5"
        			android:textSize="20.0sp"/>
     
        		<!--
        		<CheckBox android:id="@+id/check1"
        			android:layout_width="fill_parent"
        			android:layout_height="fill_parent"
        			android:layout_weight="1"/>
        		-->
        	</TableRow>
        </TableLayout>
     
     
     
     
     
    </LinearLayout>
    Je ne comprend pas pourquoi ça fonctionne avec le texte, mais pas avec l'image..

    Si vous pouviez m'éclairer

    Merci d'avance
    @+
    Seeme

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Et en débuguant, tu vois qu'il y a quoi comme "children" dans ta view que tu reçois dans "RecipeBinder" ?


    Tu as essayé en inversant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    r.setViewBinder(new RecipeBinder());
    setListAdapter(r);
    -->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setListAdapter(r);
    r.setViewBinder(new RecipeBinder());
    ?

  3. #3
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Bonjour, merci de me répondre

    inverser ne change rien, l'ImageView est toujours null.

    Dans la hierarchie, j'ai:

    ListView
    --LinearLayout
    ----TableLayout
    ----TableRow
    ------ImageView (celle qui m'interesse)
    ------TextView(qui fonctionne)

    Et ListView a autant de fils qu'il y a de ligne dans la table (cf pièce jointe)

Discussions similaires

  1. [DEV] Personnaliser les icones fichiers pour mon Appli
    Par ttone dans le forum Développement OS X
    Réponses: 17
    Dernier message: 06/06/2008, 09h55
  2. [DEV] Confusion icones fichiers et icones bundle/app
    Par ttone dans le forum Développement OS X
    Réponses: 0
    Dernier message: 05/06/2008, 22h16
  3. [DEV] Quelles type d icones pour mettre dans RealBasic
    Par Cazaux-Moutou-Philippe dans le forum Développement OS X
    Réponses: 0
    Dernier message: 24/11/2007, 23h12
  4. [Dev-C++ ] Icone
    Par Zazeglu dans le forum Dev-C++
    Réponses: 7
    Dernier message: 24/01/2004, 10h41
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo