多个TextView和单个OnTouch事件侦听器

时间:2015-06-27 18:01:41

标签: android textview ontouchlistener

我有一个简单的任务 - 角色快速搜索 - http://prntscr.com/7m10fu 我做了26个TextView,每个都有OnClickListener,将主要联系人列表滚动到适当的字母。现在我希望它像在iOS中一样工作。 当用户按下某个字母并将其移动到所有其他字母时 - 联系人会根据手指交叉的字母滚动。

我试图像这样制作onTouchListener

 tvE.setOnTouchListener(touchListener);
 tvF.setOnTouchListener(touchListener);
 tvG.setOnTouchListener(touchListener);

 View.OnTouchListener touchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            lastPressedView = -1;
        }

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            lastPressedView = v.getId();
            Log.v("w201","Down - "+lastPressedView);
            onQuickClick(v);
            return false;
        }

        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            Log.v("w201","Move: "+lastPressedView+" | "+ v.getId());
            if (lastPressedView != v.getId()) {
                lastPressedView = v.getId();

                onQuickClick(v);
                return false;
            } else {
                return true;
            }
        }
        return false;
    }
};

但它不起作用。 v.getId()始终返回触发ACTION_DOWN的TextView的ID。之后,为此视图触发了所有ACTION_MOVE。

所以有两个问题:

  1. 如何使正确的OnTouchListener正常工作:用户按下字母A,触发TextView A的ACTION_DOWN,然后用户将手指滑动到TextView B并移动为TextView B&触发的事件。等等。

  2. 也许有人可以帮助我更好地进行快速搜索。

  3. 感谢。

1 个答案:

答案 0 :(得分:0)

使用AlphaIndexer和SectionIndex,您的工作就完成了。只是为他们谷歌。您无需创建自定义侦听器。