效果图:

在gradle里导包   implementation 'com.android.support:recyclerview-v7:28.0.0'

activity_main

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">

    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerVirw"        android:layout_margin="10dp"        android:layout_width="match_parent"        android:layout_height="match_parent">    </android.support.v7.widget.RecyclerView>

</LinearLayout>

list_item
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_margin="20dp">

    <TextView        android:id="@+id/textview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textStyle="bold"        android:textSize="20sp"/></LinearLayout>

mAdapter

package com.example.admin.recyclerview;

import android.content.Context;import android.support.annotation.NonNull;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;

import java.util.List;

public class mAdapter extends RecyclerView.Adapter<mAdapter.viewHolder> {    private List<Integer> item;    private Context context;    private onClick click;

    public mAdapter(Context context, List<Integer> item, onClick click){        this.context=context;        this.item=item;        this.click=click;    }

    @NonNull    @Override    public viewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {        Context mContext=viewGroup.getContext();        View view=LayoutInflater.from(mContext).inflate(R.layout.list_item,viewGroup,false);        viewHolder holder=new viewHolder(view);        return holder;    }

    @Override    public void onBindViewHolder(@NonNull viewHolder viewHolder, int i) {        String number=String.valueOf(item.get(i));        viewHolder.textView.setText(number);

    }

    @Override    public int getItemCount() {        return item.size();    }

    public class viewHolder extends RecyclerView.ViewHolder{        public final TextView textView;

        public viewHolder(View view){            super(view);            textView=view.findViewById(R.id.textview);            textView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    int position=getAdapterPosition();                    click.onItemClick(position);                }            });        }    }    public  interface onClick{      public  void  onItemClick(int position);    }}

MainActivity
package com.example.admin.recyclerview;

import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.helper.ItemTouchHelper;import android.widget.Toast;

import java.util.ArrayList;import java.util.List;

public class MainActivity extends AppCompatActivity implements mAdapter.onClick {    private List<Integer> item;

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);

        item=new ArrayList<Integer>();        for (int i=1;i<10;i++){            item.add(new Integer(i));        }

        RecyclerView recyclerView=findViewById(R.id.recyclerVirw);        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);        recyclerView.setLayoutManager(linearLayoutManager);

        final mAdapter adapter=new mAdapter(this,item,this);        recyclerView.setAdapter(adapter);

        new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP| ItemTouchHelper.DOWN,                ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {            @Override            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {                adapter.notifyItemMoved(viewHolder.getAdapterPosition(),viewHolder1.getAdapterPosition());                return true;            }

            @Override            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {              int position=viewHolder.getAdapterPosition();              item.remove(position);              adapter.notifyItemRemoved(position);

            }        }).attachToRecyclerView(recyclerView);

    }

    @Override    public void onItemClick(int position) {        String i=String.valueOf(position+1);        Toast.makeText(this,"The position is "+i,Toast.LENGTH_SHORT).show();    }}
github项目源码: https://github.com/NeoWu55/Android-RecyclerView

RecyclerView的点击、滑动、拖动事件的更多相关文章

  1. Flutter进阶—点击、拖动和其他手势

    Flutter中的手势系统有两个层次.第一层具有原始指针事件,其描述了穿过屏幕的指针(例如触摸.鼠标和触控笔)的位置和移动.第二层具有手势,其描述由一个或多个指针移动组成的语义动作. 指针指针代表用户 ...

  2. RecyclerView的单击和长按事件(转)

    转自:http://www.jianshu.com/p/f2e0463e5aef 前言 上一篇文章揭开RecyclerView的神秘面纱(一):RecyclerView的基本使用中,主要讲述了Recy ...

  3. Android教程2020 - RecyclerView响应点击

    本文介绍RecyclerView设置点击的方法.这里给出比较常见的使用方式. Android教程2020 - 系列总览 本文链接 前面我们已经知道如何用RecyclerView显示一列数据. 用户点击 ...

  4. Android长按及拖动事件探究

    Android中长按拖动还是比较常见的.比如Launcher中的图标拖动及屏幕切换,ListView中item顺序的改变,新闻类App中新闻类别的顺序改变等.下面就这个事件做一下分析. 就目前而言,A ...

  5. Android开发 ---基本UI组件4:拖动事件、评分进度条、圆圈式进度条、进度条控制

    Android开发 ---基本UI组件4 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding=" ...

  6. Android悬浮窗及其拖动事件

    主页面布局很简单,只有一个RelativelyLayout <?xml version="1.0" encoding="utf-8"?> <R ...

  7. 解决UIButton 连续点击重复响应事件问题

    经常会遇到重复点击某个按钮 事件被响应多次的情景, 有时候可能对程序本身并没有什么影响 , 可有时候偏偏需要限制button响应事件直接的间隔 . 方法一 : 标记 1 . 利用空闲enable属性来 ...

  8. 【JS】点击目标外事件与IFRAM自适应高度

    一.点击目标外事件 $(document).mouseup(function(e){ var _con = $('.dropdown-multiSelect-list'); // 设置目标区域 if( ...

  9. 使用JS或jQuery模拟鼠标点击a标签事件代码

    原文 使用JS或jQuery模拟鼠标点击a标签事件代码 这篇文章主要介绍了使用JS或jQuery模拟鼠标点击a标签事件代码,需要的朋友可以参考下 <a id="alink" ...

  10. js(鼠标键盘拖动事件)

    拖动事件是h5(HTML5的) 1:draggable(true) 2:拖动源 ondragstart ,ondragend 3:目的地 ondraglenter,ondragover,ondragl ...

随机推荐

  1. mysql服务器主从数据库同步配置

    首先需要在同一个局域网内的两台机器(当然也可以用一台机器虚拟两台机器出来),都安装上mysql服务. 主机A: 192.168.1.100 从机B: 192.168.1.101 可以有多台从机. 1. ...

  2. Mongo基础 索引的使用

    MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构.mongodb的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引. 所有的MongoDB集合 ...

  3. vue中computed计算属性与methods对象中的this指针

    this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...

  4. noi.ac #289. 电梯(单调队列)

    题意 题目链接 Sol 傻叉的我以为给出的\(t\)是单调递增的,然后\(100\rightarrow0\) 首先可以按\(t\)排序,那么转移方程为 \(f[i] = min_{j=0}^{i-1} ...

  5. 诗人般的机器学习,ML工作原理大揭秘

    诗人般的机器学习,ML工作原理大揭秘 https://mp.weixin.qq.com/s/7N96aPAM_M6t0rV0yMLKbg 选自arXiv 作者:Cassie Kozyrkov 机器之心 ...

  6. 从.Net到Java学习第十篇——Spring Boot文件上传和下载

    从.Net到Java学习系列目录 图片上传 Spring Boot中的文件上传就是Spring MVC中的文件上传,将其集成进来了. 在模板目录创建一个新的页面 profile/uploadPage. ...

  7. Python开发爬虫之理论篇

    爬虫简介 爬虫:一段自动抓取互联网信息的程序. 什么意思呢? 互联网是由各种各样的网页组成.每一个网页对应一个URL,而URL的页面上又有很多指向其他页面的URL.这种URL之间相互的指向关系就形成了 ...

  8. MIUI10系统怎么样刷成开发版获得ROOT权限

    小米的设备不同手机型号正常情况下小米官方论坛都提供两个不同系统,可分为稳定版和开发版,稳定版没有提供root超级权限管理,开发版中就提供了root超级权限,在很多工作的时候我们需要使用的一些功能强大的 ...

  9. $符号报not defing 报错

    https://blog.csdn.net/weixin_37969488/article/details/84250833 最近因为工作问题,需要我把别的项目上的一些jsp网页copy到新项目上.放 ...

  10. SQL Server 数据库部分常用语句小结(二)

    9. 查询备份还原数据库的进度. select command ,percent_complete ,est_time_to_go=convert(varchar,(estimated_complet ...