【问题标题】:How to implement onclick method on recyclerview?如何在recyclerview上实现onclick方法?
【发布时间】:2019-02-09 13:36:24
【问题描述】:

这似乎是一个常见问题,但事实并非如此。所以我想在点击recyclerview时执行一个方法。我与 recyclerview 项目无关。我希望应用识别屏幕点击以实现方法。

代码如下:

xml

  <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="9"
     android:id="@+id/rl">
  <android.support.v7.widget.RecyclerView
      android:id="@+id/recyclerView"
      android:layout_width="match_parent"
        android:layout_height="match_parent"
      android:clipToPadding="false"
      android:divider="@null"
      android:paddingTop="8dp"
      android:visibility="visible"
      />
  </RelativeLayout>

Java

 mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    mRecyclerView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this,"sent",Toast.LENGTH_SHORT).show();
        }
    });

现在点击recyclerview区域,吐司不显示。

【问题讨论】:

  • RecyclerView onClick的可能重复
  • 不,不是,我不想点击回收站查看项目。我在主类中有一个方法,我希望它在点击 recyclerview 区域执行
  • 在RecyclerViewAdapter中创建一个接口,并在recyclerView的构造函数中初始化。在接口中创建一个抽象方法,并将 View 和 int position 作为参数传递给它。现在在 ViewHolder 中,实现 OnClickListener 并将适配器的视图和位置传递给它。然后,您可以在 MainActivity 中创建接口的对象并从那里使用它。请参阅this 寻求帮助

标签: java android xml android-recyclerview


【解决方案1】:

我想你会做 onItemClick 但对所有项目做同样的事情。所以如果你点击recyclerview的区域,那么你肯定会点击其中一项。所以只需为任何 onItem 调用一个方法

【讨论】:

    【解决方案2】:

    你可以这样使用:

              mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
                @Override
                public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
                    Toast.makeText(MainActivity.this,"sent",Toast.LENGTH_SHORT).show();
                    return false;
                }
                @Override
                public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
                }
                @Override
                public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多