5

私はAndroidアプリケーションでExpandableListViewを使用します。ユーザがグループ要素を長くクリックすると操作が行われるため、エクステンションにOnLongClickListenerを定義しました。リスナーは、アスペクトとして機能しますが、子要素はそれ以上展開されません。何か案は?Android ExpandableListビューの長いグループクリックリスナーの拡大を防ぐ

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」を渡しているためです。イベントが処理されたことを示す場合、OSはそれ以上のイベントをさらに処理しようとしなくなります。このイベントを処理して展開するには、trueではなくfalseに戻り値を変更する必要があります。

+3

私はfalseを返す試してみました。しかし、私にとっても同じ問題が残っています。変換ビューのonLongClickListenerを実装した後にグループが展開されない –

+0

グループアイテムに長いクリックリスナーを実装すると、短いクリック(グループを展開する)が機能しなくなり次第同じ問題が発生します。 –

4

expandablelistviewでsetOnItemLongClickListenerを設定できます。 ExpandableListView.PACKED_POSITION_TYPE_GROUPはグループのIDです。 ExpandableListView.PACKED_POSITION_TYPE_CHILDに変更すると、グループの子にlongclicksを使用して操作できます。そのような

何か:

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; 
     } 
    }); 
関連する問題