0

拡張可能なリストビューに 2 つの機能を実装しました。

  1. ユーザーがグループ ビューをクリックすると、子ビューが表示されます (デフォルトで発生します)。
  2. また、左から右へのロング スワイプ リスナーも実装しており、ユーザーがロング スワイプを行うと、新しいアクティビティに移動します。

これらのアクションは両方とも正常に機能しています。しかし、画面上で長いスワイプを行うと、リストビューが開き、新しいアクティビティに移動する前に子要素も表示されます (上記の 1 を参照)。

コードの関連部分は次のとおりです。

    ExpandableListView elvCat;
    .
    .
    .
    mAdapter = new SimpleExpandableListAdapter(
            WordListFragment.this.getActivity(),
            groupDataCat,
            R.layout.word_list_item,
            new String[] {WORD},
            new int[] { R.id.tvWord },
            childDataCat,
            R.layout.meaning_list_item,
            new String[] {MEANING},
            new int[] { R.id.tvMeaning}
    );

    elvCat.setAdapter(mAdapter);
    .
    .

    elvCat.setOnGroupClickListener(new OnGroupClickListener() {

        @Override
        public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2,
                long arg3) {
            if (swipeDetector.swipeDetected()) {
                if (swipeDetector.getAction() == SwipeDetector.Action.LR) {
                    elvCat.collapseGroup(arg2);
                    Toast.makeText(getActivity(),
                        "Left to right", Toast.LENGTH_SHORT).show();
                }
                if (swipeDetector.getAction() == SwipeDetector.Action.RL) {
                    Intent detailIntent = new Intent(getActivity(), WordDetailActivity.class);
                    startActivity(detailIntent);
                }
            }
            return false;
        }
    });

これを回避する方法を教えてください。

4

1 に答える 1

1

これを修正する方法を見つけました。次の方法で ongroupclick() 関数をオーバーライドすると、うまくいきます。

@Override
            public boolean onGroupClick(ExpandableListView arg0, View arg1,
                    int arg2, long arg3) {
                if (swipeDetector.swipeDetected()) {
                    if (swipeDetector.getAction() == SwipeDetector.Action.LR) {
                        return true;
                    }
                    if (swipeDetector.getAction() == SwipeDetector.Action.RL) {
                        return true;
                    }
                } else {
                    return false;
                }
                return false;
            }
        });
于 2013-08-20T13:42:29.493 に答える