Android弹窗ListPopupWindow的简单应用详解
程序员文章站
2022-06-23 23:06:53
概述常用的弹窗有菜单,或者dialog,但更加人性化和可自定义的还是popupwindow如果只是展示列表数据或者弹窗列表选择,直接使用listpopupwindow即可,不用再单独去设置布局。如果想...
概述
常用的弹窗有菜单,或者dialog,但更加人性化和可自定义的还是popupwindow
如果只是展示列表数据或者弹窗列表选择,直接使用listpopupwindow即可,不用再单独去设置布局。
如果想要更加多样化的那就自定义一个布局,使用popupwindow即可,也不复杂。
用法
自定义listpopupwindow类
public class chargeitemsumpop extends listpopupwindow { public chargeitemsumpop(context context) { super(context); } }
属性设置
因为里面已经有一个列表控件了,所以,不用再绑定布局
setheight(viewgroup.layoutparams.wrap_content); setwidth(600); setmodal(true); setbackgrounddrawable(new colordrawable(0xcc000000));
绑定adapter
//添加想要展示的数据 calendar calendar = calendar.getinstance(); int year = calendar.get(calendar.year); list<integer> lstyear = new arraylist<>(); for(int i = 2015; i <= year; i++){ lstyear.add(i); } arrayadapter<integer> adapter = new arrayadapter<>(context, android.r.layout.simple_spinner_dropdown_item, lstyear); setadapter(adapter);
activity监听
chargedateyearpop pop = new chargedateyearpop(this); pop.setonitemclicklistener((adapterview, view, i, l) -> { bindingview.chargeyear.settext(string.valueof(adapterview.getadapter().getitem(i))); pop.dismiss(); }); pop.setanchorview(bindingview.chargeyear); pop.show();
完整弹窗类
与普通的弹窗不一样的地方在于这里面是一个列表,所以要绑定adapter进行展示
public class chargedateyearpop extends listpopupwindow { public chargedateyearpop(context context) { super(context); setheight(800); setwidth(200); setmodal(true); setbackgrounddrawable(new colordrawable(0xcc000000)); initview(context); } private void initview(context context) { calendar calendar = calendar.getinstance(); int year = calendar.get(calendar.year); list<integer> lstyear = new arraylist<>(); for(int i = 2015; i <= year; i++){ lstyear.add(i); } collections.sort(lstyear); collections.reverse(lstyear); arrayadapter<integer> adapter = new arrayadapter<>(context, android.r.layout.simple_spinner_dropdown_item, lstyear); setadapter(adapter); } }
activity
private void showchargedateyear(){ chargedateyearpop pop = new chargedateyearpop(this); pop.setonitemclicklistener((adapterview, view, i, l) -> { bindingview.chargeyear.settext(string.valueof(adapterview.getadapter().getitem(i))); pop.dismiss(); //重载数据等的操作 //mpresenter.getcharges(getchargedate()); }); pop.setanchorview(bindingview.chargeyear); pop.show(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: dfs/bfs专项训练