@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);
}
我有一个带有两种视图类型的通用适配器。在我要禁用刷屏的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()的方法。由于我有一个特定的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);
}
科特林
override fun getSwipeDirs (recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
if (viewHolder is CartAdapter.MyViewHolder) return 0
return super.getSwipeDirs(recyclerView, viewHolder)
}
问题内容: 我实现了使用,并且需要在期间禁用适配器项。 我尝试了以下方法,但是单击通常会发生: 问题答案: 使用我们处理过的逻辑。这将禁用适配器项,而不是其父项。 实现应如下所示: 用法:
我已经实现了swipe以将其删除到我的RecycerView中。它触发2个功能(编辑记录和删除)。如果你向左滑动,你编辑它,如果向右滑动,你删除它。我在RecycerView项的一般部分下有这样的布局
我有viewpager和tablayout,内部viewpager有一个创建RecolyerView片段, 在RecyclerVIew roe项目中,我创建了一个水平滚动视图,用于向左/向右移动, 基本上,我只想滑动屏幕的75%左右,然后显示可滑动视图, 我还使用了的,但它会刷行(100%刷行), 但所有这些都不能正常工作,因为当我们在recyclerview项上滑动时,有时触摸到ViewPage
在适配器中 我试过了所有的方法,但是很难从RecolyerView中滑动项目,并且当snackbar的undo被按下时,我希望该项目重新出现。我希望从RecolyerView中滑动项目,并且当项目被滑动时,底部的项目应该向上移动。
如何禁用滚动?
问题内容: 我正在创建一个文件编辑系统,并希望创建一个基于行的tell()函数,而不是基于字节的函数。此函数将在open(file)调用的“ with循环”内部使用。该函数是包含以下内容的类的一部分: 以下是原始函数(如果您希望返回行和字节,则还具有char设置): 我遇到的问题是,这将返回OSError,并且与系统如何遍历文件有关,但我不理解该问题。感谢任何能提供帮助的人。 问题答案: 我有一个