5

내 Android 애플리케이션에서 ExpandableListView을 사용합니다. 사용자가 그룹 요소에서 길게 클릭하면 작업을 수행하므로 내 BaseExpandableListAdapter 확장에 OnLongClickListener을 정의했습니다. 리스너는 aspected로 작동하지만 하위 요소는 더 이상 확장되지 않습니다. 어떤 아이디어? 당신이 당신의 대가로 '진실'을 통과하기 때문에Android 확장 가능 목록 긴 그룹 클릭 수신기 수신 확장 금지

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

코드가 더 이상 다른 '온 클릭'이벤트를 처리하지 않는 이유입니다. 이벤트가 처리되었음을 나타내면 OS는 추후 이벤트를 더 처리하려고 시도하지 않습니다. 이 이벤트를 처리하고 확장하려면 true 대신 return을 false로 변경해야합니다.

+3

나는 false를 반환 노력했다. 그러나 나에게도 똑같은 문제가있다. 변환보기에 대한 onLongClickListener를 구현 한 후에 그룹이 확장되지 않습니다. –

+0

그룹 항목에 긴 클릭 수신기를 구현하자마자 짧은 클릭 (그룹 확장)이 작동을 멈 추면 같은 문제가 발생합니다. –

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; 
     } 
    });