- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 recyclerview 22.2.0 和辅助类 ItemTouchHelper.SimpleCallback 来启用列表中的 swipe-to-dismiss 选项。但由于我上面有一种标题,我需要禁用适配器第一个位置的滑动行为。由于 RecyclerView.Adapter 没有 isEnabled() 方法,我尝试通过 isEnabled() 和 方法禁用 View 交互strong>isFocusable() 在 ViewHolder 创建本身,但没有成功。我尝试将滑动阈值调整为完整值,例如 SimpleCallback 的方法 getSwipeThreshold() 中的 0f ot 1f,但也没有成功。
我的一些代码 fragment 可以帮助你帮助我。
我的 Activity :
@Override
protected void onCreate(Bundle bundle) {
//... initialization
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
return false;
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 1f;
return super.getSwipeThreshold(viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
我有一个带有 两种 View 类型的通用适配器。在我想禁用滑动的 ViewHolder 中,我做了:
public static class MyViewHolder extends RecyclerView.ViewHolder {
public ViewGroup mContainer;
public MyViewHolder(View v) {
super(v);
v.setFocusable(false);
v.setEnabled(false);
mContainer = (ViewGroup) v.findViewById(R.id.container);
}
}
最佳答案
玩了一会之后,我发现SimpleCallback 有一个名为getSwipeDirs() 的方法。因为我在 not swipable 位置有一个特定的 ViewHolder,所以我可以利用 instanceof 来避免滑动。如果不是您的情况,您可以使用适配器中 ViewHolder 的位置来执行此控制。
Java
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 0;
return super.getSwipeDirs(recyclerView, viewHolder);
}
Kotlin
override fun getSwipeDirs (recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
if (viewHolder is CartAdapter.MyViewHolder) return 0
return super.getSwipeDirs(recyclerView, viewHolder)
}
关于android - 使用 ItemTouchHelper.SimpleCallback 禁用在 RecyclerView 中的位置滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713121/
我正在使用 android studios ItemTouchHelper.SimpleCallback 来刷项目,我希望项目在长时间保持时被刷,有没有办法以编程方式刷项目?我怎样才能实现这个功能?
我已经实现了滑动以关闭到我的回收站 View 中。它触发 2 个功能(记录的编辑和删除)。如果向左滑动,则编辑它,如果向右滑动,则删除它。我在recyclerview项目的一般部分下有这样的布局
我想在我的RecyclerView中实现拖放。正如我发现的那样,实现这一点的最佳方法是将 ItemTouchHelper 附加到 RecyclerView。 onSwiped() 工作正常,但永远不会
使用 ItemTouchHelper.SimpleCallback 我能够在 RecyclerView 行上实现左右滑动,但是默认实现会突然删除列表项。我怎样才能降低这些删除的速度? 最佳答案 您可以
我使用 ViewPager2 创建了一个图像 slider ,我需要一个功能,当我向上滑动时应该删除图像。我已经使用过 RecyclerView。所以我记得我可以使用 ItemTouchHelper.
我正在尝试删除 recyclerview 项目。一旦用户滑动该项目,它应该不完全移动特定宽度,以便我可以在该滑动部分添加一个按钮,允许用户单击该按钮以删除该项目。就像附加的图像一样。在设置图标的位置,
我正在使用 recyclerview 22.2.0 和辅助类 ItemTouchHelper.SimpleCallback 来启用列表中的 swipe-to-dismiss 选项。但由于我上面有一种标
我已经成功地实现了滑动行为并用它执行了一些操作。我现在遇到的问题是我想在滑动项目时限制滑动宽度。 目前是这样的 但我想将滑动行为宽度限制到这里 这是我到目前为止所做的:- private void s
我是一名优秀的程序员,十分优秀!