gpt4 book ai didi

android - 如何选择性地设置 itemTouchHelper 滑动?

转载 作者:行者123 更新时间:2023-12-05 00:48:07 28 4
gpt4 key购买 nike

所以我在 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 子项的行上实现滑动,否则我不想实现滑动。

有什么方法可以移除这个其他子 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)

if (viewHolder.isNotSwipeable)

关于android - 如何选择性地设置 itemTouchHelper 滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240002/

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