如何从touchevent获取listview id

时间:2011-08-17 17:02:09

标签: android android-widget

有谁能告诉我如何找到与列表视图相关联的触摸事件的相关列表项ID?

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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
    }

希望这有帮助!