android RecyclerView item 点击事件


重点在适配器直接上代码:
/**
     * 全部类型适配器
     */
    public static class AllTypeAdapter extends RecyclerView.Adapter<AllTypeAdapter.ViewHolder> implements View.OnClickListener {
        private Context mContext;
        private List<AllTypeResponse.DataBean.ListBean> details_list = new ArrayList<>();
        //声明自定义的监听接口
        private OnCodeRecyclerviewItemClickListener mOncodeRecyclerviewItemClickListener = null;

        public AllTypeAdapter(Context context, OnCodeRecyclerviewItemClickListener mOnRecyclerviewItemClickListener) {
            this.mContext = context;
            this.mOncodeRecyclerviewItemClickListener = mOnRecyclerviewItemClickListener;
        }
        //添加数据
        public void addList(List<AllTypeResponse.DataBean.ListBean> mlist) {
            details_list.clear();
            details_list.addAll(mlist);
            notifyDataSetChanged();
        }
        //加载更多
        public void addMoreList(List<AllTypeResponse.DataBean.ListBean> mlist) {
            details_list.addAll(mlist);
            notifyDataSetChanged();
        }

        public AllTypeResponse.DataBean.ListBean getItem(int position) {
            return details_list.get(position);
        }

        @Override
        public int getItemCount() {
            return details_list == null ? 0 : details_list.size();
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.all_type_item, parent, false);
            view.setOnClickListener(this);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            final AllTypeResponse.DataBean.ListBean code_detaisl_data = details_list.get(position);
            if (code_detaisl_data != null) {
                holder.tv_order.setText(String.valueOf(position + 1));
                holder.tv_all_data.setText(code_detaisl_data.getTitle());
                holder.itemView.setTag(position);//给view设置tag以作为参数传递到监听回调方法中
            }
        }

        @Override
        public void onClick(View v) {
            //将监听传递给自定义接口
            mOncodeRecyclerviewItemClickListener.onItemClickListener(v, ((int) v.getTag()));
        }

        class ViewHolder extends RecyclerView.ViewHolder {
            TextView tv_all_data, tv_all_hin, tv_order;

            ViewHolder(View itemView) {
                super(itemView);
                tv_order = (TextView) itemView.findViewById(R.id.tv_order);
                tv_all_data = (TextView) itemView.findViewById(R.id.tv_all_data);
                tv_all_hin = (TextView) itemView.findViewById(R.id.tv_all_hin);
            }
        }
    }

    public interface OnCodeRecyclerviewItemClickListener {
        void onItemClickListener(View v, int position);
    }

然后在Activity中调用:

    private OnCodeRecyclerviewItemClickListener onCodeRecyclerviewItemClickListener = new OnCodeRecyclerviewItemClickListener() {
        @Override
        public void onItemClickListener(View v, int position) {
            AllTypeResponse.DataBean.ListBean item = allTypeAdapter.getItem(position);
            Toast.makeText(AllTypeActivity.this,item.getTitle(),Toast.LENGTH_LONG).show();
        }
    };
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 RecyclerView 最后一个 Item点击事件,可以在 RecyclerView.Adapter 覆盖 getItemViewType 方法,并根据 position 判断当前 item 是否为最后一个,如果是最后一个,则返回一个特殊的 ViewType;在 onCreateViewHolder 根据 ViewType 返回不同的 ViewHolder,最后一个 ViewHolder 设置监听事件。 代码示例: ``` public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<String> mList; // 定义最后一个 item 的 ViewType private static final int TYPE_FOOTER = 1; // 重写 getItemViewType 方法,根据 position 判断是否为最后一个 item @Override public int getItemViewType(int position) { if (position == getItemCount() - 1) { return TYPE_FOOTER; } return super.getItemViewType(position); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_FOOTER) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer, parent, false); return new FooterViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_normal, parent, false); return new NormalViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof NormalViewHolder) { ((NormalViewHolder) holder).bindData(mList.get(position)); } else if (holder instanceof FooterViewHolder) { // 最后一个 item 的 ViewHolder 设置监听事件 ((FooterViewHolder) holder).itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击事件处理 } }); } } @Override public int getItemCount() { // 注意 getItemCount 方法需要加上最后一个 item return mList.size() + 1; } static class NormalViewHolder extends RecyclerView.ViewHolder { public NormalViewHolder(View itemView) { super(itemView); // itemView 的初始化操作 } public void bindData(String data) { // 数据绑定操作 } } static class FooterViewHolder extends RecyclerView.ViewHolder { public FooterViewHolder(View itemView) { super(itemView); // itemView 的初始化操作 } } } ``` 其item_footer.xml 是最后一个 item 的布局文件。在 RecyclerView.Adapter ,getItemCount 方法需要加上最后一个 item。 这样就可以实现 RecyclerView 最后一个 Item点击事件了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值