android - 禁用内部 RecyclerView 的触摸

标签 android android-recyclerview

我是 RecyclerView 的新手,我想像 Listview 一样实现 OnItemClickListner。为此,我使用了以下代码。

public static class ViewHolder extends RecyclerView.ViewHolder {

    public RecyclerView recyclerView;

    public ViewHolder(View itemView) {
        super(itemView);

        recyclerView = (RecyclerView) itemView.findViewById(R.id.recycleViewIngredient);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              //Item Click Listner  
            }
        });
    }
}

它工作正常。问题是我在这个 Recyclerview 中有另一个 Recyclerview。如果我点击内部回收器 View ,父 View 的 Item Click listner 没有响应。我不想让内部 recyclerview 可点击。

任何帮助都会很棒。

最佳答案

最简单的方法是创建自己的 RecyclerView,覆盖 onTouchEvent 并在您的 XML 布局或代码中使用它。

public class MyDisabledRecyclerView extends RecyclerView {
    public MyDisabledRecyclerView(Context context) {
        super(context);
    }

    public MyDisabledRecyclerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyDisabledRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return false;
    }
}

然后您可以在其他地方重复使用该小部件,而无需任何额外的逻辑。

关于android - 禁用内部 RecyclerView 的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35842020/

相关文章:

java - MaybeEmitter 只工作一次,我如何在订阅观察者后继续发射数据

android - 在 Recyclerview 中错误地运行 onBindViewHolder - Kotlin

android - 如何从 firebase RecyclerView 中删除项目

android - 使用带有 recycler-android 的长按监听器

android - 在服务中创建线程做繁重的工作有帮助吗?

java - GCM在android studio中的实现

android - 关于下载.epub书后显示android网页

android - kotlin-类不是抽象的,不实现抽象基类成员(RecyclerView)

android - 使用 CoordinatorLayout 和 AppBarLayout 查看动画变得疯狂(有时)

android - Gradle 扩展 assembleRelease