2011-08-17 67 views
0

任何人都可以告诉我如何找到与listview关联的触摸事件的相关列表项ID?如何从touchevent获取listview id

我想在用户按下时将列表项目的背景设置为不同的颜色,并在释放时将其更改回来。我更喜欢用代码而不是背景设置。 我已经有一个onclicklistener,但也想让这个ontouchlistener工作。

回答

0
@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     // Get the item that was clicked 
     Object o = this.getListAdapter().getItem(position); 
     //do Magic 
    } 

希望这有助于!

+0

感谢您的建议,但这不是我要找的。我需要一种方法来处理onTouchListener,以便我可以获得不同的事件来按下然后释放并将它们与列表项相关联。你有任何想法要做到这一点? – droid

1

我知道这是一个老问题。但是如果其他人有这个相同的问题,那么解决方案就是派生AbsListView的类中的pointToPosition方法。

public boolean onTouch(View arg0, MotionEvent arg1) { 
    // ... other logic ... 
    int lListViewPosition = mYourListView.pointToPosition((int)arg1.getX(), (int)arg1.getY()); 

    // get the item id 
    int lItemId = mYourListView.getItemIdAtPosition(lListViewPosition); 

    // or get the actual item 
    Object lYourItemObj = mYourListView.getItemAtPosition(lListViewPosition); 
}