Android中RecyclerView的长按
16lz
2021-01-25
案例:点击跳转页面,长按弹窗,点击删除。
【完整代码在这里】
首先,写好点击事件的接口类
//自定义点击接口类 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 implements View.OnClickListener, View.OnLongClickListener { private Context myContext; private List fruiteList; private OnItemClickLitener mOnItemClickLitener; //构造方法 public FruiteAdapter(List 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); }}
三、部分界面
更多相关文章
- Android中对话框(Dialog)的创建方法
- Android改变ExpandableListView的indicator图标实现方法
- [Android] 安卓开启WIFI热点代码 以及6.0开启热点报错/异常解决
- android学习记录(三) UI界面
- SDL2库(3)-Android(安卓)端源码简要分析(VideoSubSystem)
- Android窗口机制之由setContentView引发的Window,PhoneWindow,Deco
- Android完全关闭应用程序
- Android官方架构组件ViewModel+LiveData+DataBinding架构属于自
- Android(安卓)8.1 来电默认全屏显示 如何修改