2011-08-17 65 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); 
}