我想在触摸列表项时从适配器获取列表项位置

时间:2014-05-22 10:11:53

标签: android listview adapter

我希望在触摸列表项时从适配器获取列表项位置。请建议我们如何做到这一点。 我试图得到如下:

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。

4 个答案:

答案 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是当前触摸列表项的位置。