2013-04-11 62 views
0

我尝试创建像iphone一样的列表视图,如果你刷卡让/它会显示你删除按钮,如果你点击行它会去下一个活动 但我面临一些问题 我有问题在检测列表视图排舔事件被点击或轻扫问题在删除listview行的事件

我的代码是

gestureListener = new View.OnTouchListener() { 
     private int padding = 0; 
     private int initialx = 0; 
     private int currentx = 0; 
     private adapHolder viewHolder; 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) 
      { 
       padding = 0; 
       initialx = (int) event.getX(); 
       currentx = (int) event.getX(); 
       viewHolder = ((adapHolder) v.getTag()); 
      } 
      if (event.getAction() == MotionEvent.ACTION_MOVE) 
      { 
       currentx = (int) event.getX(); 
       padding = currentx - initialx; 
       if(viewHolder != null) 
       { 
        if(Math.abs(padding)>HORIZONTAL_MIN_DISTANCE){ 
         viewHolder.btnDelete.setVisibility(View.VISIBLE); 
         viewHolder.imgArrow.setVisibility(View.GONE); 
         v.setPadding(padding, 0,0, 0); 
         //return true; 
        } 
       } 

      } 

      if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) 
      { 
       padding = 0; 
       initialx = 0; 
       currentx = 0; 
       v.setPadding(10, 0,0, 0); 
      } 


      return true; 

     }}; 

和我的列表视图中单击事件,

  listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View rowView, int positon,long id) { 

       System.out.println("position :"+positon); 

      } 
     }); 

我已经在getview方法设置好的触摸监听器,每排

convertView.setOnTouchListener(this.listener); 

我的列表视图中单击事件不火,我怎么可以同时管理事件

谢谢

回答

0

试算运动的时间(在动作开始和结束之间)。如果timeOfMotion<delta = click。如果time>delta =另一个事件。仍然选择正确的三角洲。希望它是帮助。

+0

谢谢,你可以在这里注意一些代码,我很迷惑作为回报真/假,什么时候什么我应该返回 – Android 2013-04-11 08:22:11

+0

对不起,我还没有样本。当'event.getAction()== MotionEvent.ACTION_DOWN''(1)'时,您需要获取当前时间戳,然后在'event.getAction()== MotionEvent.ACTION_UP ||'时获取当前时间戳。 event.getAction()== MotionEvent.ACTION_CANCEL''(2)'。然后'timeOfMotion =(2) - (1)'。 – jimpanzer 2013-04-11 08:26:58