【发布时间】:2018-07-31 15:58:43
【问题描述】:
我正在尝试添加滑动删除功能以及在长按 RecyclerView 项目时显示底部工作表弹出窗口。我使用ItemTouchHelper.SimpleCallback 滑动删除,ItemTouchListener 用于在长按项目时显示弹出窗口。
问题是当我滑动项目以删除它时,它也会检测到长按。
我想要的是在滑动项目时它应该忽略长按。
我有 ItemTouchHelper 类,它扩展了 Simplecallback 以进行滑动删除。以下是附加recyclerview的代码,以便滑动删除。
ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, this);
new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView);
以下是为长按事件添加监听器的代码。
recyclerView.addOnItemTouchListener(new NotesRecyclerTouchListener(getApplicationContext(), recyclerView, new NotesRecyclerTouchListener.ClickListener() {
@Override
public void onLongClick(View view, int position) {
Note note = notesList.get(position);
Toast.makeText(getApplicationContext(), note.getTitle() + " is log pressed!", Toast.LENGTH_SHORT).show();
View sheetView = MainActivity.this.getLayoutInflater().inflate(R.layout.view_bottom_sheet_dialog, null);
BottomSheetDialog dialog = new BottomSheetDialog(MainActivity.this);
dialog.setContentView(sheetView);
dialog.show();
}
}));
【问题讨论】:
-
添加一个标志怎么样?当调用
onSwiped()事件时,将swiped标志设置为true。然后如果长点击事件也被触发,检查标志,如果它是真的,那么它是在滑动事件期间,所以不要执行长点击中的代码,退出方法。滑动事件完成后,将标志重置为 false。 -
onSwiped() 将在刷卡完成后调用,但我需要检查是否正在刷卡。
-
糟糕,我的意思是
onChildDraw(),正如以下答案中所建议的那样:)
标签: java android android-recyclerview