0

我在可扩展列表视图上实现了两个功能。

  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 回答