2014-05-22 61 views
0

我想要从列表项中获取列表项的位置。请建议我们如何做到这一点。 我试图得到如下:我想从列表项中获取列表项位置

public boolean onTouch(View view, MotionEvent motionEvent) { 

     if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
      DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
      int adapterIndex = listView.pointToPosition((int) motionEvent.getX(),(int) motionEvent.getY()); 
      int firstViewItemIndex = listView.getFirstVisiblePosition(); 
      int viewIndex = adapterIndex - firstViewItemIndex; 
      pos = listView.pointToPosition((int) motionEvent.getX(), (int) motionEvent.getY()); 
      pos=pos-listView.getFirstVisiblePosition(); 
      view.startDrag(null, shadowBuilder, view, 0); 
      return true; 
     } 
} 

但总是得到0

回答

0

在您的适配器类的positiongetView(int position, View convertView, ViewGroup parent) { ..方法是当前的触摸列表项目的位置。

1

尝试以下计算策略:通过setTag(适配器观点

集列表中的项目位置),并从onTouch方法你可以得到由view.getTag()方法的项目位置。

+0

工程像魅力... thanx很多。它节省了我的时间 –

1

试试:

MyListView.setOnItemClickListener(new ListView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long l) { 

      //action for position, for example one toast and show value of var "position" 

     } 
    }); 
1

ListView.getPositionForView(View view)是你的方法。 ;-)