zoukankan      html  css  js  c++  java
  • 在ViewHolder中添加item点击事件接口(自定义

    在Adapter中定义接口并提供回调
    static class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {

    private List<String> mList;
    private Context mContext;
    private OnItemClickListener mOnItemClickListener;

    public HomeAdapter(List<String> list, Context context) {
    mList = list;
    mContext = context;
    }
    //在里面实现具体的点击响应事件,同时传入两个参数:view和postion
    public interface OnItemClickListener{
    void onItemClick(View view, int position);

    void onItemLongClick(View view, int position);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
    this.mOnItemClickListener = onItemClickListener;
    }


    public void removeData(int position) {
    mList.remove(position);
    notifyDataSetChanged();
    }


    @Override
    public HomeAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.myrecy_item,
    parent, false));
    return holder;
    }

    //对item控件进行点击事件的监听并回调给自定义的监听
    @Override
    public void onBindViewHolder(final HomeAdapter.MyViewHolder holder, int position) {
    holder.mTextView.setText(mList.get(position));
    if (mOnItemClickListener != null) {
    holder.mTextView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    int pos = holder.getLayoutPosition();//当前Item列数
    mOnItemClickListener.onItemClick(holder.mTextView, pos);
    }
    });
    holder.mTextView.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View view) {
    int pos = holder.getLayoutPosition();
    mOnItemClickListener.onItemLongClick(holder.mTextView, pos);
    return false;
    }

    });
    }
    }

    @Override
    public int getItemCount() {
    return mList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
    TextView mTextView;
    public MyViewHolder(View itemView) {
    super(itemView);
    mTextView = itemView.findViewById(R.id.tv_item);
    }
    }
    }

    在Main中的使用:
    private void setLister() {//事件监听
    mAdapter.setOnItemClickListener(new HomeAdapter.OnItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {
    Toast.makeText(MyRecyclerActivity.this, "点击了第" + (position + 1) + "条", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onItemLongClick(View view, final int position) {
    new AlertDialog.Builder(MyRecyclerActivity.this)
    .setTitle("确定要删除吗?")
    .setNegativeButton("取消", null)
    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
    mAdapter.removeData(position);
    }
    }).show();
    }
    });
    }
     
  • 相关阅读:
    静态页面设置缓存、动态页面设缓存
    未能加载文件或程序集“WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
    CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files
    asp.net mvc 重定向
    win8 应用商店。 app下载的音乐和视频软件能打开,不能正常播放 解决方法
    JS 阻止事件冒泡
    ASP.NET MVC4空MVC项目添加脚本压缩和合并
    TabHost说明
    colors.xml
    MMU (一)
  • 原文地址:https://www.cnblogs.com/banzhuan/p/7467007.html
Copyright © 2011-2022 走看看