3

Je travaille sur la liste extensible. J'ai défini onClickHandler sur l'imageview de la ligne enfant, car les listes de lecture en ligne ne fonctionnent pas dans ce cas. Mais j'ai besoin de int groupPosition et childPosition pour un traitement dans mon programme. Et ceux-ci sont disponibles sur OnChildClick().comment appeler (invoquer) la méthode onChildClick de listview extensible?

Le problème est que j'ai besoin de OnclickHandler et OnChildClick() (pour groupPosition et ChildPosition) les deux. Y a-t-il moyen d'obtenir ces deux valeurs? pouvons-nous appeler (invoquer) la méthode OnChildClick manuellement?

public class ExpList extends ExpandableListActivity 
    { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle icicle) 
      { 
      super.onCreate(icicle); 
      setContentView(R.layout.main); 

      getExpandableListView().setOnChildClickListener(new OnChildClickListener() 
      { 
       public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) 
       { 
        // some calculations here.... 
        return false; 
       } 
      }); 
    } 


public void onClickHandler (View v) 
{ 
    switch (v.getId()) { 
     case R.id.imgcall:  

      //Here I need groupPosition and ChildPosition.... 

       my_function(); 
       break;   

     case R.id.img_call_icon: 

       // some code here......      
       break; 
      }    
    } 
} 

Mon child_row.xml

<?xml version="1.0" encoding="utf-8"?> 

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

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
     android:id="@+id/img_call_type" 

     android:layout_width="40px" 
     android:layout_height="40px"/> 

     <TextView 
     android:id="@+id/space"     
     android:layout_width="10px" 
     android:layout_height="wrap_content"/> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <TextView 
      android:id="@+id/name"   
      android:textSize="14px"    
      android:layout_width="115px" 
      android:layout_height="wrap_content"/> 

     <TextView 
      android:id="@+id/number" 
      android:textSize="14px"    
      android:layout_width="115px" 
      android:layout_height="wrap_content"/> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <TextView 
      android:id="@+id/date"   
      android:textSize="14px"   
      android:layout_width="115px" 
      android:layout_height="wrap_content" 
      /> 

     <TextView 
      android:id="@+id/time" 
      android:textSize="14px"   
      android:layout_width="115px" 
      android:layout_height="wrap_content" 
      />   

    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 



<!-- on this imageview i put OnClickHandler -->  

      <ImageView 
      android:id="@+id/img_call_icon" 

     android:layout_width="40px" 
     android:layout_height="40px" 
     android:clickable="true" 
     android:onClick="onClickHandler"/> 

    </LinearLayout> 

</LinearLayout> 
+0

Je suis en train de faire quelque chose de similaire ICI !!! http: // stackoverflow.com/questions/16621070/get-context-of-popupmenu-like-contextmenu – toobsco42

Répondre

0

Vous pouvez obtenir des clics de bouton sur votre enfant Cliquez listner. En bref, copiez simplement l'instruction de votre commutateur 'onClickHandler' dans 'onChildClick'.

Ainsi, votre code sera,

public class ExpList extends ExpandableListActivity 
    { 
     /** Called when the activity is first created. */ 
     @Override 
    public void onCreate(Bundle icicle) 
     { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 

     getExpandableListView().setOnChildClickListener(new OnChildClickListener() 
     { 
      public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) 
      { 
       switch (v.getId()) { 
    case R.id.imgcall:  

     //Here I need groupPosition and ChildPosition.... 

      my_function(); 
      break;   

    case R.id.img_call_icon: 

      // some code here......      
      break; 
     }    
    } 
      } 
     }); 
    } 

Ne pas oublier de marquer cela comme réponse si elle est utile pour vous ..

+0

C'est un bon essai mais ça retourne l'identifiant de child_row. –

Questions connexes