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();
        }
    });

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
实现点击任意位置展开 ComboBox 控件,并在选项改变后选条目发生改变,你可以在上面提到的自定义 ComboBox 控件的基础上进行一些修改。 1. 在自定义 ComboBox 控件的构造函数,订阅 SelectedIndexChanged 事件。这个事件会在选项改变触发。 2. 在鼠标点击事件处理方法,添加逻辑以处理选项改变后的选条目。 下面是修改后的代码示例: ```csharp public class CustomComboBox : ComboBox { private bool isDropDownOpen; public CustomComboBox() { isDropDownOpen = false; SelectedIndexChanged += CustomComboBox_SelectedIndexChanged; } protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); // 检查鼠标点击位置是否在控件边框内 if (IsMouseOver) { // 切换展开状态 isDropDownOpen = !isDropDownOpen; // 根据展开状态显示或隐藏下拉列表 if (isDropDownOpen) { // 显示下拉列表 IsDropDownOpen = true; } else { // 隐藏下拉列表 IsDropDownOpen = false; } } } private void CustomComboBox_SelectedIndexChanged(object sender, EventArgs e) { // 选项改变后的处理逻辑 if (SelectedIndex >= 0 && SelectedIndex < Items.Count) { // 获取选条目并进行处理 var selectedItem = Items[SelectedIndex]; // 更新选条目的逻辑 // ... } } } ``` 通过这些修改,你的自定义 ComboBox 控件将在点击任意位置展开,并且在选项改变后触发 SelectedIndexChanged 事件,你可以在事件处理方法实现条目的更新逻辑。记得根据你的具体需求,进一步完善代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值