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 :

Listview avec texte et images


Sujet :

Composants graphiques Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut Listview avec texte et images
    Bonjour

    Je voudrais faire une listview pour afficher une imageView et deux textView.
    J'ai repris le tuto NotePad3 qui me permet d'afficher du texte
    Comment y ajouter un imlageView ?

    Peut-etre pouvez-vous me conseiller un tuto ou un lien
    Merci pour vos réponses qui me seraient d'un grand secours
    Claire

  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
    Salut,

    Dans un premier temps, tu devrais trouver ton bonheur ici :
    http://a-renouard.developpez.com/tut...iser-listview/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut
    Merci pour ce lien

    Je l'ai déjà consulté, mais il ne répond pas à ma recherche
    Je rempli mes textview et mon imageView avec une requete SQLite

  4. #4
    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
    Si ta récupération des informations fonctionne sans problème, le seul point bloquant correspond normalement à l'affichage de ses informations.
    Le lien répond à cette question.

    Si tu n'y arrives pas, merci de poster la partie de code qui te pose problème ainsi que les erreurs que tu obtiens (LogCat) ou les différentes choses que tu as pu essayer.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut
    Voici mon code

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    import java.io.InputStream;
    import java.net.URL;
    import java.util.ArrayList;
    import android.app.Activity;
    import android.database.Cursor;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class main extends Activity {
        /** Called when the activity is first created. */
    	private DBAdapter mDbHelper;
    	Activity context;
    	ArrayList<String> images;
    	int position_image;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            mDbHelper.open();
            Cursor c = mDbHelper.fetchAllListImages();
            startManagingCursor(c);
     
        }
        public void ItemsAdapter(Activity context,ArrayList<String> images){
    		this.context = context;
    		this.images = images;	
    	}
        public int getCount() {
    		return images.size();  
    	}
     	public Object getItem(int position) {
    		return position;
    	}
     	public long getItemId(int position) {
    		return position;
    	}
     	public View getView(int position, View convertView, ViewGroup parent) {
    		LinearLayout monlayout;
    		Myholder myholder;
    		if(convertView == null){
    			LayoutInflater inflater = context.getLayoutInflater();
    			monlayout = (LinearLayout) inflater.inflate(R.layout.affichageitem, null);
    			myholder = new Myholder();
    			monlayout.setTag(myholder);
    			myholder.titre = (TextView) monlayout.findViewById(R.id.titre);
    			myholder.format = (TextView) monlayout.findViewById(R.id.format);
    			myholder.imgView = (ImageView) monlayout.findViewById(R.id.img);
    		}
    		else{
    			monlayout = (LinearLayout)convertView;
    			myholder = (Myholder) monlayout.getTag();
    		}
    		myholder.titre.setText(images.get(position));
    		myholder.format.setText(images.get(position));
    		Drawable drawable = LoadImageFromWebOperations("http://www.lesimagesavoir.com/Images/");
    		myholder.imgView.setImageDrawable(drawable);
    		return monlayout;
    	}
    private Drawable LoadImageFromWebOperations(String url) {
    	try 
    	{  
    		InputStream is = (InputStream) new URL(url).getContent();  
    		Drawable d = Drawable.createFromStream(is, "src name");  
    		return d;  
    	}catch (Exception e) {  
    		System.out.println("Exc="+e);  
    		}
    	return null;  
    	}  
    private class Myholder{
    	TextView titre;
    	TextView format;
    	ImageView imgView;
     
    }
    }
    Et mon DBAdapter

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
     
    public class DBAdapter {
     
    	public static final String KEY_NOM = "nom";
        public static final String KEY_NUM = "num";
        public static final String KEY_TITRE = "titre";
        public static final String KEY_IMG = "img";
        public static final String KEY_FORMAT = "format";
        public static final String KEY_ROWID = "_id";
     
        private static final String TAG = "DBAdapter";
        private DatabaseHelper mDbHelper;
        private SQLiteDatabase mDb;
     
        private static final String DATABASE_CREATE =
            "create table lesImagesTB (_id integer primary key autoincrement, "
            + "abonne text not null,"
            + "num integer not null," 
            + "titre text not null,"
            + "img longtext not null,"
            + "format text not null)" 
            +";";
        private static final String DATABASE_NAME = "ImagesDB";
        private static final String DATABASE_TABLE_IMAGES = "lesImagesTB";
        private static final int DATABASE_VERSION = 2;
     
        private final Context mCtx;
     
        private static class DatabaseHelper extends SQLiteOpenHelper {
            DatabaseHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL(DATABASE_CREATE);
     
            }
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                        + newVersion + ", which will destroy all old data");
                db.execSQL("DROP TABLE IF EXISTS lesImagesTB");
                onCreate(db);
            }
        }
        public DBAdapter(Context ctx) {
            this.mCtx = ctx;
        }
        public DBAdapter open() throws SQLException {
            mDbHelper = new DatabaseHelper(mCtx);
            mDb = mDbHelper.getWritableDatabase();
            return this;
        }
        public void close() {
            mDbHelper.close();
        }
        public long createImages(String nom, String num, String titre,
        		String img, String format) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_NOM, nom);
            initialValues.put(KEY_NUM, num);
            initialValues.put(KEY_TITRE, titre);
            initialValues.put(KEY_IMG, img);
            initialValues.put(KEY_FORMAT, format);
            return mDb.insert(DATABASE_TABLE_IMAGES, null, initialValues);
        }
        public long createNouveau(String nom) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_NOM, nom);
            return mDb.insert(DATABASE_TABLE_IMAGES, null, initialValues);
        }
        public boolean deleteOeuvre(long rowId) {
     
            return mDb.delete(DATABASE_TABLE_IMAGES, KEY_ROWID + "=" + rowId, null) > 0;
        }
        public Cursor fetchAllImage(String lenom) {
            return mDb.query(DATABASE_TABLE_IMAGES, new String[] {KEY_ROWID, KEY_NOM,
            		KEY_NUM, KEY_TITRE, KEY_IMG, KEY_FORMAT
            		}, KEY_NOM + "='" + lenom + "'", null, null, null, null);
        }
        public Cursor fetchAllListImages() {
            return mDb.query(DATABASE_TABLE_IMAGES, new String[] {KEY_ROWID, KEY_NOM,
            		KEY_NUM, KEY_TITRE, KEY_IMG, KEY_FORMAT
            		}, null, null, null, null, null);
        }
        public Cursor fetchLesImages(long rowId) throws SQLException {
           Cursor oCursor =
                mDb.query(true, DATABASE_TABLE_IMAGES, new String[] {KEY_ROWID,
                		KEY_NOM, KEY_NUM, KEY_TITRE, KEY_IMG, KEY_FORMAT}, KEY_ROWID + "=" + rowId, null,
                        null, null, null, null);
            if (oCursor != null) {
                oCursor.moveToFirst();
            }
            return oCursor;
        }
        public boolean updateImages(long rowId, String nom, String num,
        		String titre, String img, String format) {
            ContentValues args = new ContentValues();
            args.put(KEY_NOM, nom);
            args.put(KEY_NUM, num);
            args.put(KEY_TITRE, titre);
            args.put(KEY_IMG, img);
            args.put(KEY_FORMAT, format);
            return mDb.update(DATABASE_TABLE_IMAGES, args, KEY_ROWID + "=" + rowId, null) > 0;
        }
     
    }
    Les erreurs sur le logcat

    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
    01-31 14:46:33.362: WARN/dalvikvm(2931): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    01-31 14:46:33.362: ERROR/AndroidRuntime(2931): Uncaught handler: thread main exiting due to uncaught exception
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cp.listviewimage/com.cp.listviewimage.main}: java.lang.NullPointerException
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2454)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.os.Handler.dispatchMessage(Handler.java:99)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.os.Looper.loop(Looper.java:123)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread.main(ActivityThread.java:4310)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at java.lang.reflect.Method.invokeNative(Native Method)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at java.lang.reflect.Method.invoke(Method.java:521)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at dalvik.system.NativeStart.main(Native Method)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931): Caused by: java.lang.NullPointerException
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at com.cp.listviewimage.main.onCreate(main.java:28)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     ... 11 more
    Je suppose que cela te parle plus qu'à moi
    Je crois comprendre qu'il y a une erreur sur le DBAdapter
    Et pourtant je ne vois pas pourquoi

    Merci

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    L'erreur est indiqué dans le logcat
    tu l'as là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931): Caused by: java.lang.NullPointerException
    01-31 14:46:33.392: ERROR/AndroidRuntime(2931):     at com.cp.listviewimage.main.onCreate(main.java:28)
    Tu n'as pas initialisé ta variable mDbHelper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mdHelper = new DBAdapter(this);

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut
    Autant pour moi
    Correction faites
    L'appli ne créé pas la table

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Citation Envoyé par ClaireDu45 Voir le message
    L'appli ne créé pas la table
    Il faut d'abord appeler le constructeur la classe Mère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Context mContext;
    public DBAdapter(Context mContext) {
    super(mContext, DATABASE_NAME, null, DATABASE_VERSION);
            this.mContext = mContext;
        }

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut
    Bonjour
    Merci Jahbromo pour ta réponse
    Je le place où ce code ?

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut
    Salut,

    Citation Envoyé par jahbromo Voir le message
    Il faut d'abord appeler le constructeur la classe Mère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Context mContext;
    public DBAdapter(Context mContext) {
    super(mContext, DATABASE_NAME, null, DATABASE_VERSION);
            this.mContext = mContext;
        }

    Je ne pense pas que cela va marcher vu que sa classe DBAdapter n'hérite pas de SQLiteOpenHelper.

    Tu as déclarer une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static DatabaseHelper
    qui n'est initialisée nulle part, je pense que c'est de la que vient ton problème.
    A moins d'avoir un objectif particulier tu peux la supprimer et utilisé la méthode de jahbromo. Sinon tu l'initialises.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 46
    Par défaut
    Tu parles de cette variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private DatabaseHelper mDbHelper;
    qui est dans mon DBAdapter ?

  12. #12
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut
    Je l'avais pas vu cette variable, je faisais référence à la classe (j'ai oublié d'ajouter class dans la déclaration).
    Pour te répondre tu dois effectivement l'initialisé, mais avec la déclaration static que t'as faite je ne sais pas trop comment. Fouille de ce côté.

Discussions similaires

  1. listview avec image+text chargé depuis internet
    Par anastunisie dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 10/05/2011, 10h50
  2. ImageInternetLoader adapter avec text et image
    Par jonathantarabbia dans le forum Android
    Réponses: 1
    Dernier message: 09/05/2011, 10h00
  3. Bouton avec texte ET image
    Par petitours dans le forum IHM
    Réponses: 7
    Dernier message: 02/10/2007, 19h40
  4. [ImageMagick] Cherche à faire une image avec texte et image
    Par dnipro dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/05/2006, 14h08
  5. Image avec texte à droite puis en dessous
    Par StarNab dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/05/2005, 17h25

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