5

ExpandableListViewはAndroidアプリケーションで、ユーザーがグループ要素を長くクリックした場合にアクションを実行したいので、拡張機能でを定義しOnLongClickListenerましたBaseExpandableListAdapter。リスナーはアスペクトとして機能しますが、子要素は拡張されなくなります。何か案は?

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

2 に答える 2

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;
        }
    });
于 2013-11-20T20:27:30.283 に答える
1

コードが他の「onClick」イベントをさらに処理しない理由は、リターンで「true」を渡しているためです。イベントが処理されたことを示すと、OSはそれ以上のイベントの処理を停止します。このイベントを処理し、さらに展開するには、returnをtrueではなくfalseに変更する必要があります

于 2012-03-19T00:37:30.943 に答える