5

我在我的Android應用程序中使用了一個ExpandableListView,如果用戶在組元素上單擊很長時間,想要執行某個操作,所以我在延伸中定義了一個OnLongClickListener。聽者的工作原理如下,但子元素不再擴展。有任何想法嗎?Android ExpandableListView長組點擊偵聽器阻止展開

public class ConnectionAdapter extends BaseExpandableListAdapter { 
    ... 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 
     // convertView is a LinearLayout 
     convertView.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       // my action here 
       return true; 
      } 
     }); 
    } 
    ... 
} 

回答

1

您的代碼沒有進一步處理任何其他'onClick'事件的原因是因爲您在返回時傳遞'true'。如果您指出處理了事件,則操作系統將停止嘗試進一步處理任何其他事件。要讓它處理這個事件,並且展開,那麼你需要將返回值更改爲false而不是true

+3

我試圖返回false。但同樣的問題也存在於我身上。在實現onLongClicklistener for convertview後,該組不會展開 – 2013-09-24 08:43:55

+0

我遇到同樣的問題,只要我在我的組項目上實現了長時間點擊偵聽器,短按(擴展組)就停止工作......任何幫助表示讚賞。 – 2014-09-04 03:18:09

4

您可以在expandablelistview上設置setOnItemLongClickListener。 ExpandableListView.PACKED_POSITION_TYPE_GROUP是組的ID,將其更改爲 ExpandableListView.PACKED_POSITION_TYPE_CHILD,您可以使用組子對象的長按操作。

類似的東西:

pager_income = (ExpandableListView) findViewById(R.id.income_scroll); 

    pager_income.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // Your code with group long click 

       return true; 
      } 

      return false; 
     } 
    });