Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多个TextView和单个OnTouch事件侦听器_Android_Textview_Ontouchlistener - Fatal编程技术网

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

Android 多个TextView和单个OnTouch事件侦听器,android,textview,ontouchlistener,Android,Textview,Ontouchlistener,我有一个简单的任务-角色快速搜索- 我这样做是因为有26个文本视图,每个视图都有一个OnClickListener,可以将主要联系人列表滚动到相应的字母。现在我希望它能像iOS一样工作。 当用户按下某个字母并将其移动到所有其他位置时,联系人会根据手指交叉的字母滚动 我试着让我的听众像这样 tvE.setOnTouchListener(touchListener); tvF.setOnTouchListener(touchListener); tvG.setOnTouchListener(t

我有一个简单的任务-角色快速搜索- 我这样做是因为有26个文本视图,每个视图都有一个OnClickListener,可以将主要联系人列表滚动到相应的字母。现在我希望它能像iOS一样工作。 当用户按下某个字母并将其移动到所有其他位置时,联系人会根据手指交叉的字母滚动

我试着让我的听众像这样

 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()返回触发操作的TextView的始终ID。在此之后,将触发此视图的所有动作

所以有两个问题:

  • 如何正确设置TouchListener,使其工作方式与下一步类似:用户按下字母A,TextView A触发操作\ U向下,然后用户将手指滑动到TextView B并移动TextView B触发的事件,依此类推

  • 也许有人能帮助我更好地快速查找信件


  • 谢谢。

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

    为什么不选择与输入模式类似的联系人?就像任何自动完成一样?据我所知,AlphaIndexer和SectionIndex不会在右侧栏中显示字母。我对在listView中查找部分并将listView滚动到此位置没有任何问题。我有一个问题,右侧栏和情况时,用户不仅点击字母,但点击并移动手指到其他字母。