2013-04-17 5 views
0

Veuillez excuser mon anglais, je suis français!Android listview onItemClickListener ne fonctionne pas

J'ai une vue de liste, et je veux afficher une autre activité sur cliquer sur un article. Mais le onItemClickListener semble ne pas fonctionner ... J'ai cherché sur Google, mais je n'ai rien trouvé.

Voici mon code:

ListView XML (personnalisé):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/activity_advert_list_listview" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/background" > 

<RelativeLayout 
    android:id="@+id/advertBackground" 
    android:layout_width="339dp" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="7.5dp" 
    android:layout_marginTop="7.5dp" 
    android:background="@drawable/background_advert_list" > 

    <RelativeLayout 
     android:id="@+id/advertImageLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="8dp" > 

     <RelativeLayout 
      android:id="@+id/advertBackgroundLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@color/grey" > 

      <ImageView 
       android:id="@+id/advertImage" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/advertPriceLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/advertImage" 
      android:layout_marginTop="-30.5dp" 
      android:background="@color/white_50" > 

      <TextView 
       android:id="@+id/advertPriceText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:hint="@string/Price" 
       android:paddingBottom="5dp" 
       android:paddingLeft="7dp" 
       android:paddingRight="7dp" 
       android:paddingTop="3dp" 
       android:textSize="14dp" 
       android:textStyle="bold" /> 
     </RelativeLayout> 
    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/advertInfosLayout" 
     android:layout_width="305dp" 
     android:layout_height="47dp" 
     android:layout_below="@+id/advertImageLayout" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="10dp" 
     android:layout_marginTop="10dp" > 

     <RelativeLayout 
      android:id="@+id/advertInfosLayoutLayout" 
      android:layout_width="225dp" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/advertImageLayout" > 

      <TextView 
       android:id="@+id/advertTitleText" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="@string/Product_name" 
       android:textColor="@color/grey_blue" 
       android:textSize="15sp" 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/advertSizeText" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/advertTitleText" 
       android:hint="@string/Product_infos" 
       android:textColor="@color/b4b5b6" 
       android:textSize="15sp" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/advertBookmarkLayout" 
      android:layout_width="74dp" 
      android:layout_height="45dp" 
      android:layout_toRightOf="@+id/advertInfosLayoutLayout" > 

      <Button 
       android:id="@+id/advertBookmarkIcon" 
       android:layout_width="26dp" 
       android:layout_height="26dp" 
       android:layout_centerVertical="true" 
       android:background="@drawable/bookmark" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/advertDistanceLayout" 
      android:layout_width="50dp" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" > 

      <Button 
       android:id="@+id/advertDistanceIcon" 
       android:layout_width="26dp" 
       android:layout_height="26dp" 
       android:layout_centerHorizontal="true" 
       android:background="@drawable/distance" /> 

      <TextView 
       android:id="@+id/advertDistanceText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/advertDistanceIcon" 
       android:layout_centerHorizontal="true" 
       android:text="13 km" 
       android:textColor="@color/grey_midark" 
       android:textSize="11sp" /> 
     </RelativeLayout> 
    </RelativeLayout> 
</RelativeLayout> 

Le code Java:

list.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // Start new detail activity 
     Intent intent = new Intent(activity, AdvertDetailActivity.class); 
     startActivity(intent); 

     Log.w("AdvertList", "Item clicked"); 
    } 
}); 

Avez-vous une idée ? Merci beaucoup!

+1

Ne fonctionne pas dans le sens ..? Qu'est-il arrivé..? Et qu'est-ce que l'activité? – Pragnani

+0

Essayez d'ajouter 'android: clickable =" true "' au XML. – Cornholio

+0

pls post plus de code. – sujith

Répondre

4

Si vous ajoutez des boutons/cases à une ligne ListView, vous devez ajouter à eux dans le xml:

android:focusable="false" 

Pourquoi? Parce que vous avez 2 zones de clic, le bouton et la ligne elle-même, vous devez donc mettre votre ligne comme zone tactile principale.

Essayez cela pour voir si cela fonctionne. D'autre part, vous avez trop de ViewGroups (RelativeLayouts) dans votre fichier XML, ce qui ralentira le processus de dessin. Avoir un seul (et peut-être quelques LinearLayouts si vous en avez vraiment besoin) devrait suffire.

+0

Non, cela ne fonctionne pas ... Et pour votre autre solution, je ne peux pas le faire ...:/ –

+0

Je suis d'accord avec @Shyish ce nombreux viewGroups sont vraiment horrible pour l'appareil à rendre et si vous plus de 50 lignes votre application peut se bloquer en raison du manque de mémoire aussi. Essayez d'utiliser ViewHierarchy Tool pour le réduire. – Ankit

Questions connexes