Aller au contenu

Integrer Une Image+Texte dans un element d'une ListView.


Amoy

Recommended Posts

Bonjour Tout le monde.

J'ai un truc qui me casse la tête depuis 2 jours et je veux de l'aide.

Je suis nouveau sur le Forum et aussi dans le développement avec Android.

Mon problème est celui ci:

Je veux créer une liste compose d'image et du texte puis que chaque élément soit Cliquable pour me donner accès à une page web ou à Une autre ACTIVITY..

Voici un petit dessin intuitif:

---------------------------------------------------------

! Photo 1 ! Titre1

! !

! ! ..... Details concernant le titre1....

------------------------------------------------------------------------------

! Photo 2 ! Titre2

! !

! ! ..... Details concernant le titre3....

------------------------------------------------------------------------------

! Photo 3 ! Titre3

! !

! ! ..... Details concernant le titre3....

------------------------------------------------------------------------------

......

Je veux que le résultat ressemble comme l'application de TF1news (se trouvant sur Android MArket).

J'ai déjà essaye un code mais il n'aafiche pas comme je le veut et surtout je sais pas comme le faire cliquable.

Le voici:

Promotion est une classe contenant les String (Titre et Detail);

private class TestImageAdapter extends BaseAdapter {

private Context mContext;

private Promotion[] sPromo;

public TestImageAdapter (Context context) {

mContext = context;

sPromo=aTableauResult;

}

public int getCount() {

return sPromo.length;

}

public Object getItem(int position) {

return position;

}

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

PromoView sv;

if (convertView == null) {

sv = new PromoView(mContext, sPromo[position]);

} else {

sv = (PromoView) convertView;

sv.setTitre();

sv.setResume();

}

return sv;

}

}

private class PromoView extends LinearLayout {

private TextView mTitle;

private TextView mResume;

private ImageView mImage;

private Promotion pr;

public PromoView (Context context, Promotion p) {

super(context);

this.pr=p;

this.setOrientation(HORIZONTAL);

mImage=new ImageView(context);

mImage.setImageResource(R.drawable.icon);

addView(mImage,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

//addView(mImage,this.getLayoutParams());

LinearLayout info=new LinearLayout(this.getContext());

info.setOrientation(VERTICAL);

// ici on construit l'affichage de notre item on peut également le faire dans un xml

//ici le titre et la taille du texte avec size

mTitle = new TextView(context);

mTitle.setText(p.toString());

mTitle.setTextSize(20);

info.addView(mTitle, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

// le résumé avec la taille du texte

mResume= new TextView(context);

mResume.setText(p.toDetail());

mResume.setTextSize(15);

//mDialogue.setTextSize(10);

info.addView(mResume, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

addView(info,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

}

/**

* Convenience method to set the title of a SpeechView

*/

public void setTitre() {

mTitle.setText(pr.toString());

}

/**

* Convenience method to set the dialogue of a SpeechView

*/

public void setResume() {

mResume.setText(pr.toDetail());

}

En attente de vos réaction, Je vous donnes mes salutations chaleureuses.

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas pourquoi tu n'utilises pas simplement une listview (un layout pour la vue parent qui contiendra l'élément ListView, et un autre layout qui décrira l'agencement de l'item qui sera répété). De plus, une de tes méthodes est fausse. Pourquoi renvoyer la position alors que tu veux récupérer l'élément du tableau (le but de getItem)

            public Object getItem(int position) {
               return position;
           }

Je l'aurais transformé en

            public Object getItem(int position) {
               return [b]sPromo[/b][position];
           }

Pour les exemples de ListView, y en a un récent dans le forum Activity/Services

Lien vers le commentaire
Partager sur d’autres sites

Regarde ce petit article écrit par Romain Guy pour bien positionner tes vues

http://www.curious-creature.org/2009/02/22/android-layout-tricks-1/

Concernant le déclenchement d'action sur le click d'un item de ta liste, il te suffit d'overrider la méthode onListItemClick dans ta ListActivity (je te laisse regarder la doc ou chercher dans les nombreux exemples retournés par Google :))

Lien vers le commentaire
Partager sur d’autres sites

@akex: Au fait Utilisé je l'ai déjà fait. Mai maintenant là je me perds c'est quand je dois ajouter un Élément compose..

De plus je vois que je dois créer un Adapter propos à l'élément que je vais utiliser.. Comment je faire ce la?

J'ai deja prépare les layout (il y' en a 2):.. Mais comment je vais les lier je me perds...Tu as quelque chose à me suggère?

Voici le layout de chaque element de la liste.....

        xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
       android:layout_height="wrap_content"
      android:orientation="horizontal">
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content">

       android:layout_width="fill_parent" 
       android:layout_height="wrap_content">
                   android:id="@+id/TextView01" 
                   android:layout_width="fill_parent" 
                   android:layout_height="wrap_content">

                   android:id="@+id/TextView02" 
                   android:layout_width="fill_parent" 
                   android:layout_height="wrap_content">



Voici le layout de l'activité principale qui va contenir la ListView

       android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/test4" 
       android:isScrollContainer="true">
               android:layout_height="wrap_content" 
               android:background="@style/style" 
               android:id="@+id/listtest4">



Lien vers le commentaire
Partager sur d’autres sites

Tout dépend à partir de quoi tu alimentes ta liste.

Curseur : faudra étendre la classe SimpleCursorAdapter ou une de ses sous classes

Array : baseadapter ou une de ses sous classes

Je te recommande vivement d'aller voir ici : http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html

Si tu peux me donner la source d'origine de tes données, je pourrai te dire plus exactement quel adapter prendre et comment feeder ta liste. Je sais déjà que tu dois renseigner une ImageView et deux TextView. Si tu me dis la source (curseur, tableau), je pourrai te donner un exemple de code :).

Lien vers le commentaire
Partager sur d’autres sites

Bonjour..

Mes donnes données se trouvent dans un

ArrayList

Class Promo {

 private String LienImage;
 private String Titre;
 private String Detail;
 private String to

// .....getteur et setteur...toString....

La source je l'alimente sans problème. Donc si tu peux me donner l' Adapter nécessaire et comment le mettre dans une liste et le rendre Cliquable(Pour l'utiliser dans une nouvelle activité) ça sera Génial.

Merci et Bonne Journée.

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...