2015-06-27 58 views
2

我有一个简单的任务 - 字符快速搜索 - http://prntscr.com/7m10fu 我做了26个TextViews它们每个都有OnClickListener将主联系人列表滚动到适当的字母。现在我希望它能像iOS一样工作。 当用户按下某个字母并将其移过所有其他字母时 - 通讯录会根据手指交叉的字母进行滚动。多个TextView和单个OnTouch事件监听器

我试图让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,ACTION_DOWN触发TextView的A,用户轻扫手指TextView的B之后和移动事件触发对于TextView B &等等。

  2. 也许有人可以帮助使快速的信件搜索更好,然后我做到了。

谢谢。

+0

为什么不选择类似输入模式的联系人?就像任何自动完成一样? – pskink

回答

0

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

+0

据我了解,AlphaIndexer&SectionIndex不会显示带有字母的右侧栏。我没有任何问题在listView查找部分和滚动列表视图到这个位置。当右侧栏和用户不只是单击字母时,我遇到右侧栏和情况的问题,但单击并将手指移动到其他字母。 – w201