gpt4 book ai didi

java - 如何检测 Recyclerview 项目是否被刷?

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:16 24 4
gpt4 key购买 nike

我正在尝试添加滑动删除功能,以及在长按 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 将在项目将被完全滑动时调用。如果您将开始滑动元素然后将其移回,则不会调用该方法。所以你不应该使用这个方法来标记滑动结束。您可以像这样使用 onChildDraw 中的 isCurrentlyActive:

var swiping: Boolean = false

override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
swiping = isCurrentlyActive
}
}

移动元素时为true,滑动或取消滑动后为false。

关于java - 如何检测 Recyclerview 项目是否被刷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com