首页 > 系统 > Android > 正文

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

2019-10-22 18:21:29
字体:
来源:转载
供稿:网友

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

android,商品筛选,商品属性筛选,android京东商品属性筛选,android商品属性选择

点击筛选按钮会弹出一个自己封装好的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/140099.html">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();      }     } 

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

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


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表