我在列表视图上有一个视图列表,我想单击它并触发 OnItemClickListener。虽然同时我希望能够滑动每个视图并进行自定义操作。这意味着当在 ArrayAdapter 中创建每个视图时,我必须为每个视图创建自己的 OnTouchEvent。
有没有办法让两者一起工作,以便我可以轻松进行自定义操作,例如滑动项目和单击项目
这与 android 最近活动的处理方式非常相似 - 你知道,它们显示了所有最近打开的应用程序的列表,它们可以滑动删除,或单击打开。查看他们的代码,我想你会得到一个很好的主意:https ://github.com/android/platform_frameworks_base/tree/master/packages/SystemUI/src/com/android/systemui/recent
你的类可以同时实现 View.OnTouchListener、AdapterView.OnItemClickListener
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_UP){
Log.d(TAG, "ontouch: UP");
**// Here you can figure if it was simple item click event.
// We return false only when user touched once on the view.
// this will be handled by onItemClick listener.**
if(lastAction == -1){
lastAction = MotionEvent.ACTION_UP;
view.clearFocus();
return true;
}
return false;
}
else if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
Log.d(TAG, "ontouch: DOWN");
return false;
}
else {
// This is all action events.
lastAction = -1;
return true;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// We come here after onTouch event figured out that its a simple touch event and needs to be handled here.
}