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

Android自定义单选多选下拉列表的实例代码

程序员文章站 2022-10-10 12:39:31
发疯的产品要做一个可以单选和多选的下拉列表,陪你玩玩吧。 直接上效果: 实现方案: 我的思路是自定义一个类继承popupwindow,里面的选项采用listvie...

发疯的产品要做一个可以单选和多选的下拉列表,陪你玩玩吧。

直接上效果:

Android自定义单选多选下拉列表的实例代码

实现方案:

我的思路是自定义一个类继承popupwindow,里面的选项采用listview,再结合一些动画来实现。

核心代码:

public class multiselectpopupwindows extends popupwindow {

  private context context;
  private view parent;
  private list<search> data;
  private int ystart;
  private searchpopupwindowsadapter adapter;

  public multiselectpopupwindows(context context, view parent, int ystart, list<search> data) {
    this.context = context;
    this.parent = parent;
    this.ystart = ystart;
    this.data = data;
    initview();
  }

  private void initview() {
    view view = view.inflate(context, r.layout.popupwindows_multiselect, null);
    view.startanimation(animationutils.loadanimation(context, r.anim.fade_in_slow));
    linearlayout linearlayout = (linearlayout) view.findviewbyid(r.id.linearlayout_selector);
    linearlayout.startanimation(animationutils.loadanimation(context, r.anim.list_top_in));
    listview listview = (listview) view.findviewbyid(r.id.listview_selector);

    setwidth(viewgroup.layoutparams.match_parent);
    setheight(viewgroup.layoutparams.wrap_content);
    setbackgrounddrawable(new bitmapdrawable());
    setfocusable(true);
    setoutsidetouchable(true);
    setcontentview(view);
    showatlocation(parent, gravity.top, 0, densityutil.dip2px(context, ystart));
    update();

    initlistview(listview, data);
  }

  private void initlistview(listview listview, list<search> data) {
    adapter = new searchpopupwindowsadapter(context);
    adapter.setitems(data);
    listview.setadapter(adapter);
  }

  public list getitemlist() {
    return adapter.getitemlist();
  }

}
 

项目源码:https://github.com/hfrommane/multiselectpopupwindows

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