android仿京东商品属性筛选功能

 更新时间:2017年12月04日 10:29:26   作者:ZhengJiaoCsdn  
这篇文章主要为大家详细介绍了android仿京东商品属性筛选功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

筛选和属性选择是目前非常常用的功能模块;几乎所有的APP中都会使用;

点击筛选按钮会弹出一个自己封装好的popupWindow,实用方法非常简单;两行代码直接显示;(当然初始化数据除外)

这里和以前用到的流式布局有些不一样:流式布局

以前使用的是单个分类,而且也没有在项目中大量实用;这个筛选功能除了数据外几乎都是从项目中Copy出来的;

整个popupWindow布局就是一个自定义的ListView,这个自定义的listview主要是控制listview的高度;

如果数据少的话就是自适应,如果数据多了就限制高度为屏幕的一半;

自定义的ListView:

public class CustomHeightListView extends ListView { 
 
  private Context mContext; 
 
  public CustomHeightListView(Context context) { 
    this(context, null); 
  } 
 
  public CustomHeightListView(Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
  } 
 
  public CustomHeightListView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(context); 
  } 
 
  private void init(Context context) { 
    mContext = context; 
  } 
 
  @Override 
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    try { 
      //最大高度显示为屏幕内容高度的一半 
      Display display = ((Activity) mContext).getWindowManager().getDefaultDisplay(); 
      DisplayMetrics d = new DisplayMetrics(); 
      display.getMetrics(d); 
      //设置控件高度不能超过屏幕高度一半(d.heightPixels / 2,下面有清空按钮所以再减200,也可随意换成自己想要的高度) 
      heightMeasureSpec = MeasureSpec.makeMeasureSpec(d.heightPixels / 2 - 200, MeasureSpec.AT_MOST); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    //重新计算控件高、宽 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
  } 
} 

ListView中每个item是一个流式布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:orientation="vertical"> 
 
  <TextView 
    android:id="@+id/tv_type_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
 
  <com.example.zheng.flowlayoutdemo.view.SkuFlowLayout 
    android:id="@+id/layout_property" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
   
</LinearLayout> 

整个popupwindow都封装在一个类中,创建的时候只需把数据源传递过去即可,实用的时候直接show就可以了

flowPopWindow = new FlowPopWindow(MainActivity.this, dictList); 
    flowPopWindow.showAsDropDown(ivBack); 

当点击确定的时候直接设置一个监听即可:

flowPopWindow.setOnConfirmClickListener(new FlowPopWindow.OnConfirmClickListener() { 
     @Override 
     public void onConfirmClick() { 
      StringBuilder sb = new StringBuilder(); 
      for (FiltrateBean fb : dictList) { 
       List<FiltrateBean.Children> cdList = fb.getChildren(); 
       for (int x = 0; x < cdList.size(); x++) { 
        FiltrateBean.Children children = cdList.get(x); 
        if (children.isSelected()) 
         sb.append(fb.getTypeName() + ":" + children.getValue() + ";"); 
       } 
      } 
      if (!TextUtils.isEmpty(sb.toString())) 
       Toast.makeText(MainActivity.this, sb.toString(), Toast.LENGTH_LONG).show(); 
     } 
    } 

点击打开链接免费下载源码

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

相关文章

  • Android签名知识小结

    Android签名知识小结

    不止一次有用到Android签名相关的知识,每次都几乎从零开始在Google上搜索找,不想在继续这样了,找了个时间好好整理了一下自己用到的一些碎片知识,于是乎放到这里,一是备忘,二是帮助别人
    2016-03-03
  • Flutter Http网络请求实现详解

    Flutter Http网络请求实现详解

    这篇文章主要介绍了Flutter Http网络请求实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Android 高仿微信语音聊天页面高斯模糊(毛玻璃效果)

    Android 高仿微信语音聊天页面高斯模糊(毛玻璃效果)

    大家在使用微信聊天的时候有没有注意到微信语言聊天用的是高斯模糊效果,基于代码是如何实现的呢?下面小编给大家带来了Android 高仿微信语音聊天页面高斯模糊(毛玻璃效果),感兴趣的朋友一起看下吧
    2016-08-08
  • Flutter Flar动画使用实战示例

    Flutter Flar动画使用实战示例

    这篇文章主要为大家介绍了Flutter Flar动画使用实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Android实现图片区域裁剪功能

    Android实现图片区域裁剪功能

    这篇文章主要为大家详细介绍了Android实现图片区域裁剪功能,调用相册、拍照实现缩放、切割图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android权限询问的实例详解

    Android权限询问的实例详解

    这篇文章主要介绍了Android权限询问,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • android 加载本地联系人实现方法

    android 加载本地联系人实现方法

    在android开发过程中,有些功能需要访问本地联系人列表,本人搜集整理了一番,拿出来和大家分享一下,希望可以帮助你们
    2012-12-12
  • Android安卓中循环录像并检测内存卡容量

    Android安卓中循环录像并检测内存卡容量

    这篇文章主要介绍了Android安卓中循环录像并检测内存卡容量,当内存卡空间已满时,本文还实现自动删除视频列表里面的第一个文件,需要的朋友可以参考下
    2015-06-06
  • Android App打包加固后的APK无法安装问题解决

    Android App打包加固后的APK无法安装问题解决

    Android应用当中,很多隐私信息都是以 字符串的形式存在的,所以需要加密,本文主要介绍了Android App打包加固后的APK无法安装问题解决,感兴趣的可以了解一下
    2024-01-01
  • Android Hilt依赖注入的使用讲解

    Android Hilt依赖注入的使用讲解

    这篇文章主要介绍了Android Hilt依赖注入的使用,首先,某个类的成员变量称为依赖,如若此变量想要实例化引用其类的方法,可以通过构造函数传参或者通过某个方法获取对象,此等通过外部方法获取对象实例的称为依赖注入
    2023-01-01

最新评论