2012-03-30 25 views
11

我在本教程的幫助下創建了一個ExpandableListView:link。 我或多或少地理解了代碼,並試圖在組上設置一個longclicklistener。ExpandableListView組項目上的Android LongClickListener

有對孩子項setOnChildClickListener已經和我設法設置他們longclicklistener:

exList.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 
       groupPosition = ExpandableListView.getPackedPositionGroup(id); 
       childPosition = ExpandableListView.getPackedPositionChild(id); 
//[....] 
return false; 
     } 
    }); 

如何設置的項目組一longclicklistener?

我知道代碼很難閱讀,所以我創建了一個示例項目並將其上傳到here。 這對兒童沒有onlongclicklistener,因爲這幾乎是從上面的鏈接原來的。 如果有人能幫助我,我將不勝感激。

回答

41

組項目是所有項目的一個子集,因此上述方法應在任何一種情況下調用。然後,您可以使用getPackedPositionType來確定所選項目是組,項目還是null。

該代碼,這將是:

exList.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      int itemType = ExpandableListView.getPackedPositionType(id); 

      if (itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 
       childPosition = ExpandableListView.getPackedPositionChild(id); 
       groupPosition = ExpandableListView.getPackedPositionGroup(id); 

       //do your per-item callback here 
       return retVal; //true if we consumed the click, false if not 

      } else if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       groupPosition = ExpandableListView.getPackedPositionGroup(id); 
       //do your per-group callback here 
       return retVal; //true if we consumed the click, false if not 

      } else { 
       // null item; we don't consume the click 
       return false; 
      } 
    }); 

如果它是一組,你將使用getPackedPositionGroup如上獲得正被長按組ID。如果它是一個項目,您將使用getPackedPositionGroup和getPackedPositionChild的組合。

+0

哇。這很容易。非常感謝你! – erdomester 2012-03-30 21:57:10

+1

不客氣!如果有效,不要忘記接受/ upvote /等。 :) – 2012-03-30 21:59:05

+0

哇....這通常實施,但完全正常工作與組和兒童事件的數據訪問它的位置。 – 2014-05-29 06:26:12

相關問題