我希望在触摸列表项时从适配器获取列表项位置。请建议我们如何做到这一点。 我试图得到如下:
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 :(得分:2)
试一试:
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 :(得分:1)
尝试以下approch:
通过setTag()在适配器视图中设置列表项位置,并且通过onTouch方法,您可以通过view.getTag()方法获取项目位置。
答案 2 :(得分:1)
ListView.getPositionForView(View view)
是您的方法。 ; - )
答案 3 :(得分:0)
在适配器类的getView(int position, View convertView, ViewGroup parent) { ..
方法中,position
是当前触摸列表项的位置。