给RecyclerView的item添加点击监听事件
来源:互联网 发布:听英语的软件 编辑:程序博客网 时间:2024/06/04 22:48
给recyclerView的item添加点击事件的监听我知道的有2种,一种是直接给item设置一个id,然后按照正常的流程在adapter里面给item添加方法setOnclickListener(),这个就不说
今天说的是给item添加回调的监听
主布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.duanlian.recyclerviewclicklistener.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
item布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item" android:layout_width="match_parent" android:layout_height="64dp" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:paddingBottom="10dp" android:paddingTop="10dp" > <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="每日送金币" android:textColor="#333333" android:textSize="15sp"/> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:text="每日送金币" android:textColor="#999999" android:textSize="13sp"/> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tv_title" android:layout_marginLeft="10dp" android:layout_marginTop="6dp" android:text="金币为0时,送30金币,每天送两次" android:textColor="#999999" android:textSize="13sp"/> </RelativeLayout></RelativeLayout>
关键是在adapter,其实我也不知道怎么说,看代码吧
package com.duanlian.recyclerviewclicklistener.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import com.duanlian.recyclerviewclicklistener.MainActivity;import com.duanlian.recyclerviewclicklistener.R;import java.util.List;/** * RecyclerView的adapter */public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private MyItemClickListener mItemClickListener; private Context mContext; private List<String> mList; public RecyclerViewAdapter(MainActivity mainActivity, List<String> list) { this.mContext = mainActivity; this.mList = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(mContext, R.layout.item_recyclerview, null); //将全局的监听传递给holder ViewHolder holder = new ViewHolder(view, mItemClickListener); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //给空间赋值 } @Override public int getItemCount() { return mList.size(); } class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private MyItemClickListener mListener; public ViewHolder(View itemView, MyItemClickListener myItemClickListener) { super(itemView); //将全局的监听赋值给接口 this.mListener = myItemClickListener; itemView.setOnClickListener(this); } /** * 实现OnClickListener接口重写的方法 * @param v */ @Override public void onClick(View v) { if (mListener != null) { mListener.onItemClick(v, getPosition()); } } } /** * 创建一个回调接口 */ public interface MyItemClickListener { void onItemClick(View view, int position); } /** * 在activity里面adapter就是调用的这个方法,将点击事件监听传递过来,并赋值给全局的监听 * * @param myItemClickListener */ public void setItemClickListener(MyItemClickListener myItemClickListener) { this.mItemClickListener = myItemClickListener; }}
然后就是的activity你调用创建的那个方法了
package com.duanlian.recyclerviewclicklistener;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import com.duanlian.recyclerviewclicklistener.adapter.RecyclerViewAdapter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private RecyclerViewAdapter mAdapter; private List<String> mList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mRecyclerView = (RecyclerView) findViewById(R.id.recycler); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mList = new ArrayList<>(); for (int i = 0; i < 10; i++) { mList.add(i + ""); } mAdapter = new RecyclerViewAdapter(this, mList); mRecyclerView.setAdapter(mAdapter); //调用方法,传入一个接口回调 mAdapter.setItemClickListener(new RecyclerViewAdapter.MyItemClickListener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this, "点击了" + position, Toast.LENGTH_SHORT).show(); } }); }}
demo下载地址:http://download.csdn.net/detail/dl10210950/9662909
1 0
- 给RecyclerView的item添加点击监听事件
- 给RecyclerView的item添加点击监听事件
- 给RecyclerView的Item添加点击事件
- RecyclerView 给Item添加点击事件
- Android RecyclerView给Item添加点击事件
- 给recyclerview的item添加点击事件的 一种方法
- RecyclerView的Item设置点击监听事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- RecyclerView添加Item的点击事件
- 为RecyclerView添加item的点击事件
- 对RecyclerView的item添加点击事件
- 为RecyclerView添加item的点击事件
- AS插件汇总
- ElasticSearch笔记-索引与查询
- vmware sdk使用方法
- 常用封装
- PullToRefreshListView调用onRefreshComplete方法 无法取消刷新的bug
- 给RecyclerView的item添加点击监听事件
- 镜像服务器的搭建
- Spark不是唯一,三种新兴的开源数据分析工具
- 转载:Android系统启动过程uboot--kernel--Android
- android UI中滚动条目的实现
- 判断访问网站是否为手机
- 关于sac的一些笔记
- 用C语言写一个数组,实现类似JAVA语言中ArrayList的功能
- Loadrunner日志参数的设置与使用