如何在recyclerview上实现onclick方法?

时间:2019-02-09 13:36:25

标签: java android xml android-recyclerview

这似乎是一个常见问题,但事实并非如此。因此,我想在单击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区域时,吐司不显示。

2 个答案:

答案 0 :(得分:0)

我想您会执行onItemClick,但是对所有项目执行相同的操作。因此,如果您单击recyclerview的区域,那么您肯定会单击其中一项。因此,只需为任何onItem调用一个方法

答案 1 :(得分:0)

您可以使用以下内容:

          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) {
            }
        });