Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android:处理放置在RecyclerView内的ImageView的点击大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@
@H_262_3@ 我刚刚从ListView移动到RecyclerView,我遇到了一个问题:我无法让 ImageView的onClickListener工作.基本上我想要的是当用户点击它时在新活动内以全屏模式显示图像.

像这样的东西:

Android:处理放置在RecyclerView内的ImageView的点击

我尝试了什么:

@Override
    public PaletteViewHolder onCreateViewHolder(ViewGroup parent,int viewTypE) {
        View itemView = LayoutInflater.
                from(parent.getContext()).
                inflate(R.layout.card_view,parent,falsE);

        return new PaletteViewHolder(itemView);

    }
@Override
    public void onBindViewHolder(PaletteViewHolder holder,final int position) {
        Palette palette = palettes.get(position);
        holder.text1.setText(palette.getName());
        holder.text2.setText(palette.getHexValue());
        final Context context = holder.img.getContext();
        PiCasso.with(context)
                .load(DaciaData.DaciaModele[position])
                .placeholder(R.drawable.placeholder)
                .error(R.drawable.error)
                .resizeDimen(R.dimen.list_detail_image_size,R.dimen.list_detail_image_sizE)
                .centerInside()
                .tag(context)
                .into(holder.img);

        holder.img.setOnClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                //add data to your bundle
                bundle.puTint("id",position);
                //creatE intent
                Intent mainIntent = new Intent(context,Extra1.class);
                //add bundle to intent
                mainIntent.putExtras(bundlE);
                //start activity
                context.startActivity(mainIntent);
            }
        });
    }

编辑

RecyclerItemClickListener:

public class RecyclerItemClickListener implements RecyclerView.onItemTouchListener {
    private OnItemClickListener mListener;

    public interface OnItemClickListener {
        void onItemClick(View view,int position);
    }

    GestureDetector mGestureDetector;

    public RecyclerItemClickListener(Context context,OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context,new GestureDetector.SimpLeonGestureListener() {
            @Override public Boolean onSingleTapUp(MotionEvent E) {
                return true;
            }
        });
    }

    @Override
    public void onrequestDisallowInterceptTouchEvent(Boolean disallowIntercept) {

    }

    @Override public Boolean onInterceptTouchEvent(RecyclerView view,MotionEvent E) {
        View childView = view.findChildViewUnder(e.getX(),e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(E)) {
            mlistener.onItemClick(childView,view.getChildPosition(childView));
            return true;
        }
        return false;
    }

    @Override public void onTouchEvent(RecyclerView view,MotionEvent motionEvent) { }
}
@H_425_4@mainRecyclerView这是我定义RecyclerView和onItemTouchListener的地方:

@Override
    public void onViewCreated(View view,@Nullable Bundle savedInstanceStatE) {
        super.onViewCreated(view,savedInstanceStatE);

        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerModels);
        linearlayoutmanager linearLM = new linearlayoutmanager(getActivity());
        linearLm.setOrientation(linearlayoutmanager.VERTICAL);
        recyclerView.setLayoutManager(linearLM);

        recyclerView.addOnItemTouchListener(                 
                new RecyclerItemClickListener(getActivity(),new RecyclerItemClicklistener.onItemClickListener() {
                    @Override
                    public void onItemClick(View view,int position) {
                        Bundle bundle = new Bundle();
                        bundle.puTint("id",position);

                        Intent i = new Intent(getActivity(),MainViewPager.class);
                        i.putExtras(bundlE);
                        startActivity(i);
                    }
                })
        );

删除recyclerView.addOnItemTouchListener();将使用图像长按来解决问题,但我无法启动ViewPager,我想RecyclerItemClickListener有问题.

解决方法

对不起我迟到的回答,我最终解决了这个问题.我所要做的就是删除recyclerView.addOnItemTouchListener(…);然后我在我的适配器中实现了View.onClickListener,然后我为TextView和ImageView设置了OnClickListener方法,如下所示:

public class MyViewHolder extends RecyclerView.ViewHolder implements View.onClickListener {

        protected TextView textView;
        protected ImageView imageView;

        public ContactViewHolder(View v) {
            super(v);
            textView =  (TextView) v.findViewById(R.id.t1);
            imageview = (ImageView)  v.findViewById(R.id.img);

            textView.setOnClickListener(this);
            imageview.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {    

        if (v.getId() == textView.getId()) {
          Toast.makeText(context,"TextView Clicked!",Toast.LENGTH_LONG).show();
        } else if (v.getId() == imageView.getId()) {
          Toast.makeText(context,"ImageView Clicked!",Toast.LENGTH_LONG).show();
        }
    }

大佬总结

以上是大佬教程为你收集整理的Android:处理放置在RecyclerView内的ImageView的点击全部内容,希望文章能够帮你解决Android:处理放置在RecyclerView内的ImageView的点击所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。