所以我在 recyclerview rv 上实现了这个 itemtouchhelper.simple 回调。
现在,在这个 rv 中,我根据内容类型将 2 种布局设置为一行。
因此,当我在 rv 上设置此 touchhelper 时,它正在这两种布局上实现,即使我不想这样做。我只想将该滑动应用于此布局的一种类型。
ItemTouchHelper.SimpleCallback ith = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if(viewHolder.itemView.findViewById(R.id.messageholder_from) != null)
{
Log.d("texts", "onSwiped: "+viewHolder.itemView.findViewById(R.id.messageholder_from).findViewById(R.id.crfrom));
}
adapter.notifyDataSetChanged();
}
};
new ItemTouchHelper(ith).attachToRecyclerView(rv);
正如您所看到的,我只想在其中包含 messageholder_from child 的行上实现滑动,否则我不想实现滑动。
有什么方法可以删除另一个子 messageholder_to 上的滑动动画和侦听器。
我的应用程序根据消息 ID 显示 to_layout 或 from_layout 。
感谢您的任何帮助。
在你的里面ItemTouchHelper.SimpleCallback
,覆盖getSwipeDirs()
方法并为您想要禁用滑动的任何行返回 0。
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (viewHolder.itemView.findViewById(R.id.messageholder_from) == null) {
return 0;
}
return super.getSwipeDirs(recyclerView, viewHolder);
}
根据您的应用程序的具体设置方式,可能有更好的方法来检测该情况viewHolder
是您想要禁止滑动的类型。例如,也许你可以有
if (viewHolder instanceof WrongKindOfViewHolder)
or
if (viewHolder.isNotSwipeable)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)