欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。