recyclerView 的使用多条目/条目中控件点击事件/条目长按事件

寻找控件,设置布局管理器
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
recyclerView的适配器

public class RecyclerAdapter extends RecyclerView.Adapter {
   
    
    private LayoutInflater layoutInflater;
    private DisplayImageOptions options;  //imageryloader加载图片使用
    private List<DaoBean.ResultBean.DataBean> list;
    private Context context;
    public RecyclerAdapter(Context context,List<DaoBean.ResultBean.DataBean> list) {
        this.context = context;
        this.list = list;
        layoutInflater = LayoutInflater.from(context);
    }
 
 private ItemClickListener ClickListener;
//点击事件
    public RecyclerAdapter setClickListener(ItemClickListener ClickListener){
        this.ClickListener = ClickListener;
        return this;
    }
//点击事件的接口

    public interface ItemClickListener{
        void OnItemClick(View view,int position);
    }


    /*private final int PIC1 = 0;
    private final int PIC2 = 1;


    @Override
    public int getItemViewType(int position) {

        if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() == null && list.get(position).getThumbnail_pic_s03() == null){
            return PIC1;
        }else if (list.get(position).getThumbnail_pic_s() != null && list.get(position).getThumbnail_pic_s02() != null && list.get(position).getThumbnail_pic_s03() != null){
            return PIC2;
        }else{
            return 0;
        }
    }*/   多条目时添加这个方法,一般不需要
//加载条目的布局文件
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View inflate;
        if (viewType == PIC1){
            inflate = View.inflate(parent.getContext(), R.layout.item1, null);
            return new Myviewholder(inflate);
        }else if (viewType == PIC2){
            inflate = View.inflate(parent.getContext(), R.layout.item2, null);
            return new Myviewholder2(inflate);
        }
        return null;
    }

private OnLongItemListener onLongItemListener;
//长按事件 public void setOnLongItemListener(OnLongItemListener onLongItemListener) { this. onLongItemListener = onLongItemListener; } public interface OnLongItemListener { void onClick(View v, int position, String str); }//给条目的控件添加数据 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { int itemViewType = getItemViewType(position); switch (itemViewType) { case PIC1: final Myviewholder myviewholder = (Myviewholder) holder; myviewholder. textView.setText( list.get(position).getTitle()); ImageLoader. getInstance().displayImage( list.get(position).getThumbnail_pic_s(),myviewholder. imageView, options);
 
//给条目中图片添加点击事件
 if (ClickListener != null){
                    myviewholder.imageView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ClickListener.OnItemClick(view,position);
                            Log.e("TAG_img2","图片"+position);
                            ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder.imageView, "alpha", 1f, 0.1f, 1f);
                            anim.setDuration(3000);// 动画持续时间
                            anim.start();
                        }
                    });
                }
                break;
            case PIC2:
                final Myviewholder2 myviewholder2 = (Myviewholder2) holder;
                myviewholder2.textView2.setText(list.get(position).getTitle());
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),myviewholder2.imageView2,options);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),myviewholder2.imageView3,options);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),myviewholder2.imageView4,options);
                Log.e("IMG","IMG"+list.get(position).getThumbnail_pic_s()+"****"+list.get(position).getThumbnail_pic_s02()+"****"+list.get(position).getThumbnail_pic_s03());
                
//给条目中图片添加点击事件
if (ClickListener != null){
                    myviewholder2.imageView2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ClickListener.OnItemClick(view,position);
                            Log.e("TAG_img2","图片"+position);
                            ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView2, "alpha", 1f, 0.1f, 1f);
                            anim.setDuration(3000);// 动画持续时间
                            anim.start();
                        }
                    });
                    myviewholder2.imageView3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ClickListener.OnItemClick(view,position);
                            Log.e("TAG_img2","图片"+position);
                            ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView3, "alpha", 1f, 0.1f, 1f);
                            anim.setDuration(3000);// 动画持续时间
                            anim.start();
                        }
                    });
                    myviewholder2.imageView4.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ClickListener.OnItemClick(view,position);
                            Log.e("TAG_img2","图片"+position);
                            ObjectAnimator anim = ObjectAnimator.ofFloat(myviewholder2.imageView4, "alpha", 1f, 0.1f, 1f);
                            anim.setDuration(3000);// 动画持续时间
                            anim.start();
                        }
                    });
                }
                break;
        }
    }



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


//获取条目中控件
    class Myviewholder extends RecyclerView.ViewHolder{

        private final TextView textView;
        private final ImageView imageView;

        public Myviewholder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
            imageView = itemView.findViewById(R.id.imageView);
//给条目添加长按点击事件
            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if (onLongItemListener != null) {
                        onLongItemListener.onClick(v, getLayoutPosition(), String.valueOf(list.get(getLayoutPosition())));
                    }
                    return false;
                }
            });
        }
    }
    class Myviewholder2 extends RecyclerView.ViewHolder{

        private final TextView textView2;
        private final ImageView imageView2;
        private final ImageView imageView3;
        private final ImageView imageView4;

        public Myviewholder2(View itemView) {
            super(itemView);
            textView2 = itemView.findViewById(R.id.textView2);
            imageView2 = itemView.findViewById(R.id.imageView2);
            imageView3 = itemView.findViewById(R.id.imageView3);
            imageView4 = itemView.findViewById(R.id.imageView4);
            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if (onLongItemListener != null) {
                        onLongItemListener.onClick(v, getLayoutPosition(), String.valueOf(list.get(getLayoutPosition())));
                    }
                    return false;
                }
            });
        }
    }
}
 

最后在配置完适配器后加

//回调点击

recyclerAdapter.setClickListener(new RecyclerAdapter.ItemClickListener() {
        @Override
        public void OnItemClick(View view, int position) {
            Log.e("TAG_img1","图片"+position);


        }
    });
//回调长按监听
    recyclerAdapter.setOnLongItemListener(new RecyclerAdapter.OnLongItemListener() {
        @Override
        public void onClick(View v, final int position, String str) {
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("提示")
                    .setTitle("是否确认删除?")
                    .setPositiveButton("是", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            data.remove(position);
                            recyclerAdapter.notifyDataSetChanged();
                        }
                    })
                    .setNegativeButton("否", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(MainActivity.this, "已取消删除", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .create()
                    .show();
        }
    });

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值