写在前边
kotlin 代码实现请看这里
kotlin 代码实现请看这里
kotlin 代码实现请看这里
RecyclerView 的点击事件经常用到, 虽然代码很少, 但是每次都要手写就有点过意不去了(没别的就是懒), 于是乎, 将代码贴在这里方便每次复制粘贴, 改一改名称即可拿来用, 现在很多app都用上了kotlin, 如果想找kotlin的代码请点击上面的连接跳转;
如果不出意外, 每次更新的功能性代码都会附上kotlin的实现;
RecyclerView 设置点击事件的步骤
1.实现OnClickListener事件
2.重写onClick方法
3.给item添加点击事件
4.定义点击事件回调接口
5.声明点击事件对象
6.设置点击事件对象
7.点击事件对象调用方法
点击事件的简单描述, 想看全部内容, 往下翻
public class MyAdapter {
// 5.声明点击事件对象
private OnItemClickListener mOnItemClickListener;
// 6.设置点击事件对象
public void setOnItemClickListener(OnItemClickListener listener) {
mOnItemClickListener = listener;
}
// 4.定义点击事件回调接口
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
// 1.实现OnClickListener事件
class MyAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public MyAdapterViewHolder(@NonNull View itemView) {
super(itemView);
// 3.给item添加点击事件
itemView.setOnClickListener(this);
}
// 2.重写onClick方法
@Override
public void onClick(View v) {
// 7.点击事件对象调用方法
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
}
这里给出实现 Adapter 的完整代码
完整步骤:
1.实现OnClickListener事件
2.重写onClick方法
3.给item添加点击事件
4.定义点击事件回调接口
5.声明点击事件对象
6.设置点击事件对象
7.点击事件对象调用方法
8.实现RecyclerView.Adapter, 并指定泛型为我们自定义的ViewHolder
9.加载布局
10.申明控件
11.查找控件
12.设置数据
13.返回item的数量
adapter 类
// 8.实现RecyclerView.Adapter, 并指定泛型为我们自定义的ViewHolder
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyAdapterViewHolder> {
// 5.声明点击事件对象
private OnItemClickListener mOnItemClickListener;
// 6.设置点击事件对象
public void setOnItemClickListener(OnItemClickListener listener) {
mOnItemClickListener = listener;
}
@NonNull
@Override
public MyAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// 9.加载布局
View itemView = View.inflate(parent.getContext(), R.layout.item_view_layout, null);
return new MyAdapterViewHolder(itemView);
}
// 12.设置数据
@Override
public void onBindViewHolder(@NonNull MyAdapterViewHolder holder, int position) {
}
// 13.返回item的数量
@Override
public int getItemCount() {
return 0;
}
// 4.定义点击事件回调接口
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
// 1.实现OnClickListener事件
class MyAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// 10.申明控件
private CheckBox cbChecked;
private TextView tvTitle;
public MyAdapterViewHolder(@NonNull View itemView) {
super(itemView);
// 3.给item添加点击事件
itemView.setOnClickListener(this);
// 11.查找控件
cbChecked = (CheckBox) itemView.findViewById(R.id.cbChecked);
tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
}
// 2.重写onClick方法
@Override
public void onClick(View v) {
// 7.点击事件对象调用方法
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
}
布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:listPreferredItemHeight"
android:gravity="center_vertical"
android:orientation="horizontal"
tools:context=".MainActivity">
<CheckBox
android:id="@+id/cbChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="title"
android:textAllCaps="false"
android:textColor="#2196F3"
android:textSize="18sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_btn_speak_now" />
</LinearLayout>