猿问

单击侦听器到 RecyclerView

我想要完成的是为ImageViewRecyclerView 的行内部创建一个侦听器。


这段代码已经可以工作了,但这不是我想要的解决方案,因为您需要在获得所需结果之前双击。ImageView


// row click listener

recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() {


    @Override

    public void onClick(View view, final int position) {


        ImageView viewContent = (ImageView)view.findViewById(R.id.btnViewContent);

        ImageView deleteContent = (ImageView)view.findViewById(R.id.btnDeleteContent);


        viewContent.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), "VIEW CONTENT", Toast.LENGTH_SHORT).show();

            }

        });


        deleteContent.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), "DELETE CONTENT", Toast.LENGTH_SHORT).show();

            }

        });


    }


    @Override

    public void onLongClick(View view, int position) {}


}));

知道如何将其转换为单击解决方案吗?建议甚至是一条评论都会对我有很大帮助。


潇湘沐
浏览 102回答 3
3回答

汪汪一只猫

这不是正确的方法,因为我们的一位朋友建议onBindViewHolder 在滚动过程中一次又一次地被调用,因此在此处添加侦听器不是最佳做法。最好的方法是按照我的建议将它添加到 ViewHolder 上。检查我上面的答案。在 OnBindViewHolder 方法中添加您的 imageView 单击侦听器@Overridepublic void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {    holder.btnClassAddCart.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            // Do what you want here        }    });}

BIG阳

Then there is no need to implement recyclerView.addOnItemTouchListener ,  inside Viewholder just add clicklistener on the view(image) you want below is the example for reference. ` public static class HeaderViewHolder extends RootViewHolder {        @BindView(R.id.cardview)        CardView cardview;        @BindView(R.id.main_container)        LinearLayout main_container;        @BindView(R.id.music_cardview)        CardView music;        @BindView(R.id.shabad_cardview)        CardView shabadvaani;        @BindView(R.id.news_cardview)        CardView news;        @BindView(R.id.donate_cardview)        CardView donate;        @BindView(R.id.bs_cardview)        CardView bs;        @BindView(R.id.bl_cardview)        CardView bl;        @BindView(R.id.bng_cardview)        CardView bng;        @BindView(R.id.more_cardview)        CardView more;        @BindView(R.id.vid_cardview)        CardView vid;        @BindView(R.id.medi_cardview)        CardView medi;////        @BindView(R.id.ama_cardview)//        CardView ama;        public HeaderViewHolder(final View itemView,final OnItemClickListener mOnItemClickListener) {            super(itemView);            ButterKnife.bind(this, itemView);            news.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    if (mOnItemClickListener != null) {                        mOnItemClickListener.openDrawer();                    }                    //Intent i= new Intent(ctx,);                    //open drawer code                }            });            shabadvaani.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Intent i = new Intent(ctx, IndexActivity.class);                    ctx.startActivity(i);                }            });            music.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Intent i = new Intent(ctx, MainActivity.class);                    i.putExtra("slug","audiobhajan");                    ctx.startActivity(i);                    //open drawer code                }            });            more.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {//                    Intent i = new Intent(ctx, stayrocks.jambh.vani.auth.MainActivity.class);//                    ctx.startActivity(i);                    if (mOnItemClickListener != null) {                        mOnItemClickListener.openDrawer();                    }                    //open drawer code                }            });            bs.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Intent intent= new Intent(ctx, AmaActivity.class);                    ctx.startActivity(intent);                }            });            bl.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Intent i = new Intent(ctx, ItemListActivity.class);                    ctx.startActivity(i);                    //open drawer code                }            });            bng.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {//                    String appPackage = "com.my.bishnoi.nextgen";//                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackage));//                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    Intent intent= new Intent(ctx, WallpaperActivity.class);                    ctx.startActivity(intent);                    //open drawer code                }            });            medi.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {//                    String appPackage = "com.my.bishnoi.nextgen";//                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackage));//                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    Intent intent= new Intent(ctx, stayrocks.jambh.vani.activities.jyot.MainActivity.class);                    ctx.startActivity(intent);                    //open drawer code                }            });            vid.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {//                    String appPackage = "com.my.bishnoi.nextgen";//                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackage));//                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    Intent intent= new Intent(ctx, VideoListDemoActivity.class);                    ctx.startActivity(intent);                    //open drawer code                }            });//            ama.setOnClickListener(new View.OnClickListener() {//                @Override//                public void onClick(View v) {////                    String appPackage = "com.my.bishnoi.nextgen";////                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackage));////                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//                    Intent intent= new Intent(ctx, AmaActivity.class);//                    ctx.startActivity(intent);//                    //open drawer code//                }//            });        }    }`

繁花不似锦

在 OnBindViewHolder 方法中添加您的 imageView 单击侦听器    @Override    public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {        holder.imageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // Do what you want here            }        });}
随时随地看视频慕课网APP

相关分类

Java
我要回答