RecyclerView的点击事件添加-------接口回调的形式添加

 1 package com.example.recyclerviewdemo;
 2
 3 import android.support.v7.widget.RecyclerView;
 4 import android.util.Log;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8 import android.widget.TextView;
 9
10 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{
11     private  String[]  datas;
12     public MyAdapter(String[] datas) {
13         this.datas = datas;
14     }
15     private OnRecyclerViewItemClickListener mOnItemClickListener = null;
16
17     //define interface
18     public static interface OnRecyclerViewItemClickListener {
19         void onItemClick(View view , String data);
20     }
21
22     @Override
23     public ViewHolder onCreateViewHolder(ViewGroup viewGroup,  int viewType) {
24         View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
25         ViewHolder vh = new ViewHolder(view);
26         //将创建的View注册点击事件
27         view.setOnClickListener(this);
28         return vh;
29     }
30
31     @Override
32     public void onBindViewHolder(ViewHolder viewHolder,  int position) {
33         viewHolder.mTextView.setText(datas[position]);
34         //将数据保存在itemView的Tag中,以便点击时进行获取
35         viewHolder.itemView.setTag(datas[position]);
36     }
37
38     @Override
39     public void onClick(View v) {
40         if (mOnItemClickListener != null) {
41             //注意这里使用getTag方法获取数据
42             mOnItemClickListener.onItemClick(v,(String)v.getTag());
43         }
44     }
45
46     public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
47         this.mOnItemClickListener = listener;
48     }
49
50
51     //获取数据的数量
52     @Override
53     public int getItemCount() {
54         return datas.length;
55     }
56     //自定义的ViewHolder,持有每个Item的的所有界面元素
57     public static class ViewHolder extends RecyclerView.ViewHolder {
58         public TextView mTextView;
59         public ViewHolder(View view){
60         super(view);
61             mTextView = (TextView) view.findViewById(R.id.text);
62         }
63     }
64 }

adapter

 1 import com.example.recyclerviewdemo.MyAdapter.OnRecyclerViewItemClickListener;
 2
 3 import android.support.v7.app.ActionBarActivity;
 4 import android.support.v7.widget.LinearLayoutManager;
 5 import android.support.v7.widget.RecyclerView;
 6 import android.os.Bundle;
 7 import android.view.Menu;
 8 import android.view.MenuItem;
 9 import android.view.View;
10 import android.widget.Toast;
11
12 public class MainActivity extends ActionBarActivity {
13     private RecyclerView mRecyclerView;
14     private LinearLayoutManager mLayoutManager;
15     private MyAdapter mAdapter;
16     private String[] data= new String[] {"aa","bb", "aa","bb", "aa","bb", "aa","bb", "aa","bb","aa","bb", "aa","bb", "aa","bb", "aa","bb", "aa","bb"  };
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         mRecyclerView = (RecyclerView)findViewById(R.id.my_recycler_view);
23         //创建默认的线性LayoutManager
24         mLayoutManager = new LinearLayoutManager(this);
25         mRecyclerView.setLayoutManager(mLayoutManager);
26         //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
27         mRecyclerView.setHasFixedSize(true);
28         //创建并设置Adapter
29         mAdapter = new MyAdapter(data);
30         mRecyclerView.setAdapter(mAdapter);
31         mAdapter.setOnItemClickListener(new OnRecyclerViewItemClickListener(){
32             @Override
33             public void onItemClick(View view , String data){
34                 Toast.makeText(MainActivity.this, data, 600).show();
35             }
36         });
37     }
38
39     @Override
40     public boolean onCreateOptionsMenu(Menu menu) {
41         // Inflate the menu; this adds items to the action bar if it is present.
42         getMenuInflater().inflate(R.menu.main, menu);
43         return true;
44     }
45
46     @Override
47     public boolean onOptionsItemSelected(MenuItem item) {
48         // Handle action bar item clicks here. The action bar will
49         // automatically handle clicks on the Home/Up button, so long
50         // as you specify a parent activity in AndroidManifest.xml.
51         int id = item.getItemId();
52         if (id == R.id.action_settings) {
53             return true;
54         }
55         return super.onOptionsItemSelected(item);
56     }
57
58
59 }

activity

时间: 2024-10-10 21:41:08

RecyclerView的点击事件添加-------接口回调的形式添加的相关文章

揭开RecyclerView的神秘面纱(二):处理RecyclerView的点击事件

前言 上一篇文章揭开RecyclerView的神秘面纱(一):RecyclerView的基本使用中,主要讲述了RecyclerView的基本使用方法,不同的布局管理器而造成的多样化展示方式,展示了数据之后,一般都会与用户进行交互,因此我们需要处理用户的点击事件.在ListView和GridView提供了onItemClickListener这个监听器,然而我们查找RecyclerView的API却没有类似的监听器,因此我们需要自己手动处理它的点击事件. 以下提供两种方法来实现处理Recycler

RecyclerView的点击事件

RecyclerView 一.简单介绍 这个是谷歌官方出的控件.使我们能够很easy的做出列表装的一个控件,当然recyclerview的功能不止这些,它还能够做出瀑布流的效果,这是一个很强大的控件,内部自带viewholder能够使我们很easy的完毕很多操作,正在一步一步代替listview这个控件.当然它也有一些小的缺点.那就是谷歌官方并没有直接给我写出它的点击事件的接口,可是这并难不倒我们,我们能够自己写一个回调的接口.实现点击事件.在这里我不仅要为大家介绍recyclerview的it

Jquery为DIV添加点击事件,Jquery为a标签超链接添加点击事件

Js代码   <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> 为这5个DIV绑定点击事件,当点击第2个的时候弹出提示2,第4个的时候弹出提示4 <script type="text/javascript"> $(function(){ $("div").e

android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理

前三篇文章 android v7兼容包RecyclerView的使用(三)--布局管理器的使用 android v7兼容包RecyclerView的使用(二) android v7兼容包RecyclerView的使用(一) 介绍了RecyclerView的使用以及常见的相关类和布局管理器的灵活之处.写了这么多篇,还没涉及到用户交互,那么怎么处理点击事件呢. 在RecyclerView中你会惊奇的发现,该类中并没有OnItemClickListener监听器监听我们的单击事件,也没有OnItemL

Recycleview点击事件监听器(转自:http://www.jianshu.com/p/f2e0463e5aef)

package com.taven.uav.view; import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View; /** * @Author Weizh * @Date 2017/11/7 * @Descriptor

Android教程2020 - RecyclerView响应点击

本文介绍RecyclerView设置点击的方法.这里给出比较常见的使用方式. Android教程2020 - 系列总览 本文链接 前面我们已经知道如何用RecyclerView显示一列数据. 用户点击某个item时,app可以做出相应的反应.这里我们使用添加点击监听器的方式来实现这个效果. Android开发中,监听器模式使用十分广泛.最先被开发者认识到的应该是Button的点击事件监听. 设计并添加监听器 首先设计监听器.OnItemClickListener1接口.实际开发中,接口的名字可以

Android Button 注册点击事件

Android Button控件处理点击事件 总共有四种方式 第一种,个人认为最方便的一种,像HTML和JS那样直接注册 <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="BUTTON" <!-- 在这里注册了onClick的回调函数

Android点击事件的四种写法

Android点击事件的四种写法 一.Android点击事件的四种写法 1.点击事件的第一种写法 .  写一个内部类.实现点击事件的接口 bt.setOnClickListener(new MyButtonListener()); 2.点击事件的第二种写法,匿名内部类 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } }); 3.点击事件的第三种

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb