【Android】RecyclerView中点击Itemd出PopupWindow

【Android】RecyclerView中点击Itemd出PopupWindow,第1张

概述文章目录前言写法1:mcontext写法2:parent.getContext()前言效果:【核心问题在于PopupWindow上下文环境不知道怎么写?】onClick()中的finalViewroot=LayoutInflater.from(mcontext).inflate(R.layout.popupwindow_layout,null,false);的from()参数和onCreateView

文章目录前言写法1:mcontext写法2:parent.getContext()


前言

效果:

【核心问题在于PopupWindow上下文环境不知道怎么写?】

onClick()中的final VIEw root = LayoutInflater.from(mcontext).inflate(R.layout.popupwindow_layout, null, false);
的from()参数
和onCreateVIEwHolder()中的VIEw vIEw= LayoutInflater.from(mcontext).inflate(R.layout.ListvIEw_item,parent,false);的上下文是同一个上下文。

可以写parent.getContext(),也可以写个mcontext类成员变量。

写法1:mcontext

ItemAdapter.java:RecyclerVIEw的自定义Adapter

package com.example.myapplication;import androID.content.Context;import androID.vIEw.Gravity;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.linearLayout;import androID.Widget.PopupWindow;import androID.Widget.TextVIEw;import androID.Widget.Toast;import androIDx.annotation.NonNull;import androIDx.recyclervIEw.Widget.RecyclerVIEw;import java.util.List;public class ItemAdapter extends RecyclerVIEw.Adapter<ItemAdapter.VIEwHolder> {    private List<Item> mitemList;    private Context mcontext;    static class VIEwHolder extends RecyclerVIEw.VIEwHolder    {        TextVIEw itemname;        TextVIEw itemProgress;        button itemBtn;        public VIEwHolder(VIEw vIEw)        {            super(vIEw);            itemname=vIEw.findVIEwByID(R.ID.name);            itemProgress=vIEw.findVIEwByID(R.ID.progress);            itemBtn=vIEw.findVIEwByID(R.ID.show);        }    }    public ItemAdapter(Context context,List<Item> itemList)    {        this.mitemList=itemList;        this.mcontext=context;    }    @OverrIDe    public int getItemCount() {        return mitemList.size();    }    @NonNull    @OverrIDe    public VIEwHolder onCreateVIEwHolder(@NonNull VIEwGroup parent, int vIEwType) {        VIEw vIEw= LayoutInflater.from(mcontext).inflate(R.layout.ListvIEw_item,parent,false);        final VIEwHolder vIEwHolder=new VIEwHolder(vIEw);        vIEwHolder.itemBtn.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                int pos=vIEwHolder.getAdapterposition();                switch (pos) {                    case 0: {                        final VIEw root = LayoutInflater.from(mcontext).inflate(R.layout.popupwindow_layout, null, false);                        final PopupWindow popupWindow = new PopupWindow(                                root,                                VIEwGroup.LayoutParams.WRAP_CONTENT,                                VIEwGroup.LayoutParams.WRAP_CONTENT,                                true                        );                        vIEwHolder.itemBtn.setonClickListener(new VIEw.OnClickListener() {                            @OverrIDe                            public voID onClick(VIEw vIEw) {                                popupWindow.showAtLocation(root, Gravity.CENTER, 0, 0);                            }                        });                        button btn_close = root.findVIEwByID(R.ID.close);                        btn_close.setonClickListener(new VIEw.OnClickListener() {                            @OverrIDe                            public voID onClick(VIEw vIEw) {                                popupWindow.dismiss();                            }                        });                        break;                    }                    default:                        break;                }            }        });        return vIEwHolder;    }    @OverrIDe    public voID onBindVIEwHolder(@NonNull VIEwHolder holder, int position) {        Item item=mitemList.get(position);        holder.itemname.setText(item.getname());        holder.itemProgress.setText(item.getProgress());    }}
写法2:parent.getContext()
 @NonNull    @OverrIDe    public VIEwHolder onCreateVIEwHolder(@NonNull final VIEwGroup parent, int vIEwType) {        VIEw vIEw= LayoutInflater.from(parent.getContext()).inflate(R.layout.ListvIEw_item,parent,false);        final VIEwHolder vIEwHolder=new VIEwHolder(vIEw);        vIEwHolder.itemBtn.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                int pos=vIEwHolder.getAdapterposition();                switch (pos) {                    case 0: {                        final VIEw root = LayoutInflater.from(parent.getContext()).inflate(R.layout.popupwindow_layout, null, false);                        final PopupWindow popupWindow = new PopupWindow(                                root,                                VIEwGroup.LayoutParams.WRAP_CONTENT,                                VIEwGroup.LayoutParams.WRAP_CONTENT,                                true                        );                        vIEwHolder.itemBtn.setonClickListener(new VIEw.OnClickListener() {                            @OverrIDe                            public voID onClick(VIEw vIEw) {                                popupWindow.showAtLocation(root, Gravity.CENTER, 0, 0);                            }                        });                        button btn_close = root.findVIEwByID(R.ID.close);                        btn_close.setonClickListener(new VIEw.OnClickListener() {                            @OverrIDe                            public voID onClick(VIEw vIEw) {                                popupWindow.dismiss();                            }                        });                        break;                    }                    default:                        break;                }            }        });        return vIEwHolder;    }
总结

以上是内存溢出为你收集整理的【Android】RecyclerView中点击Itemd出PopupWindow全部内容,希望文章能够帮你解决【Android】RecyclerView中点击Itemd出PopupWindow所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存