我终于找到了使用以下方法的解决方案GestureDetector
:
final GestureDetector gestureDetector = new GestureDetector(MyActivity.this,
new GestureDetector.SimpleOnGestureListener(){
public boolean onSingleTapConfirmed(MotionEvent e) {
int position = listView.pointToPosition((int)e.getX(), (int)e.getY());
if(position != ListView.INVALID_POSITION){
listView.playSoundEffect(SoundEffectConstants.CLICK);
//onItemClick code goes here
//or call listView.performItemClick
return true;
}
return false;
};
});
listView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
listView.setSelector(android.R.color.transparent);
onItemClick
就我而言,我在里面添加了我正在做的事情onSingleTapConfirmed
并OnItemClickListener
从列表中删除了。这就是为什么我还添加了playSoundEffect
模拟点击的功能。
在最后一行中,我禁用了ListView
点击突出显示,因为只有在没有发生平滑滚动时才会突出显示行。通过禁用它,我每次点击都会得到相同的行为。