案例:点击跳转页面,长按弹窗,点击删除。
【完整代码在这里】
首先,写好点击事件的接口类
//自定义点击接口类
public interface OnItemClickLitener {
//点击事件
void onItemClick(View view, int position);
//长按事件
void onItemLongClick(View view, int position);
}
一、步骤
(1)在Adapter中写一个item的点击事件接口,Adapter中设置该接口,并给其一个set方法
//申明接口
private OnItemClickLitener mOnItemClickLitener;
//设置setmOnItemClickLitener的set方法
public void setmOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
this.mOnItemClickLitener = mOnItemClickLitener;
}
(2)Adapter类实现 View.OnClickListener, View.OnLongClickListener接口,并实现其方法。实现接口的方法中,回调item的点击事件接口
@Override
public void onClick(View view) {
//回调点击事件
ViewHolder holder = (ViewHolder) view.getTag(R.id.fruite_holder);
if (mOnItemClickLitener != null) {
this.mOnItemClickLitener.onItemClick(view, holder.getAdapterPosition());
}
}
@Override
public boolean onLongClick(View view) {
//回调长按事件
ViewHolder holder = (ViewHolder) view.getTag(R.id.fruite_holder);
if (mOnItemClickLitener != null) {
this.mOnItemClickLitener.onItemLongClick(view, holder.getAdapterPosition());
}
return false;
}
(3)在Activity中调用方法
Adapter.setmOnItemClickLitener(new ExcelAdapter.OnItemClickLitener() {
@Override
public void onItemClick(View view, int position) {
//单击事件,例如跳转页面
Object object = list.get(position);
Intent intent = new Intent(getActivity(),OtherActivity.class);
startActivity(intent);
}
@Override
public void onItemLongClick(View view, final int position) {
//长按事件,弹窗
Object object = list.get(position);
final String[] items = { "删除"};
android.app.AlertDialog.Builder listDialog = new android.app.AlertDialog.Builder(getActivity());
listDialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent;
switch (i) {
case 0://删除item
startEditName(table);
break;
default:
break;
}
}
});
listDialog.show();
}
});
二、主要代码
adapter的完整代码
package com.example.lj.sqlapp;
import android.content.Context;
import android.media.Image;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* 2018-9-5
*/
public class FruiteAdapter extends RecyclerView.Adapter<FruiteAdapter.ViewHolder> implements View.OnClickListener, View.OnLongClickListener {
private Context myContext;
private List<Fruite> fruiteList;
private OnItemClickLitener mOnItemClickLitener;
//构造方法
public FruiteAdapter(List<Fruite> fruiteList) {
this.fruiteList = fruiteList;
}
//设置setmOnItemClickLitener的set方法
public void setmOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
this.mOnItemClickLitener = mOnItemClickLitener;
}
@Override
public FruiteAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (myContext == null) {
myContext = parent.getContext();
}
View view = LayoutInflater.from(myContext).inflate(R.layout.item_list, parent, false);
ViewHolder holder = new FruiteAdapter.ViewHolder(view);
view.setTag(R.id.fruite_holder,holder);//注意这里,对应values/ids.xml里的value
view.setOnClickListener(this);view.setOnLongClickListener(this);
return holder;
}
@Override
public void onBindViewHolder(FruiteAdapter.ViewHolder holder, int position) {
Fruite fruite = fruiteList.get(position);
holder.fruiteName.setText(fruite.getFruitrName());
// holder.fruiteInfo.setText(fruite.getFruiteInfo());
}
@Override
public int getItemCount() {
return fruiteList.size();
}
public void addData(int position, Fruite fruite) {
fruiteList.add(position, fruite);
notifyItemInserted(position);
}
public void removeData(int position) {
fruiteList.remove(position);
notifyItemRemoved(position);
}
@Override
public void onClick(View view) {
//回调点击事件
ViewHolder holder = (ViewHolder) view.getTag(R.id.fruite_holder);
if (mOnItemClickLitener != null) {
this.mOnItemClickLitener.onItemClick(view, holder.getAdapterPosition());
}
}
@Override
public boolean onLongClick(View view) {
//回调长按事件
ViewHolder holder = (ViewHolder) view.getTag(R.id.fruite_holder);
if (mOnItemClickLitener != null) {
this.mOnItemClickLitener.onItemLongClick(view, holder.getAdapterPosition());
}
return false;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CardView careView;
private TextView fruiteName;
private TextView fruiteInfo;
private ImageView fruiteImg;
public ViewHolder(View itemView) {
super(itemView);
fruiteImg = itemView.findViewById(R.id.card_fruit_image);
fruiteName = itemView.findViewById(R.id.card_fruit_name);
}
}
//自定义点击接口类
public interface OnItemClickLitener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
}
三、部分界面