Android类似电商类的多级选择

看到这个图大家就知道是什么了,很多电商APP中都是有这种商品的多级选择,我也有上网查找了一下,有很多办法可以做出这种效果而且效果更好,今天我就说说我这种

我觉得最简单的。其实就是两个ListView的联动。

通过点击左侧的ListView得到item的下标,把得到的下标传给右侧的ListView,右侧的ListView再根据下标进行加载数据。很简单对吧。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ListViewandroid:id="@+id/list_one"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:divider="@null"android:scrollbars="none"></ListView><ListViewandroid:id="@+id/list_two"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"android:divider="@null"android:background="#ffff"android:scrollbars="none"></ListView>
</LinearLayout>

就是两个ListView而已。

MainACtivity:

   leftAdapter = new LeftAdapter(MainActivity.this,Menus, select);rightAdapter = new RightAdapter(MainActivity.this,Data, select);one.setAdapter(leftAdapter);two.setAdapter(rightAdapter);one.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {select=position;//因为选中左侧的菜单后背景颜色会变,所以每次点击都要刷新一下leftAdapter.notifyDataSetChanged();//用来确定选中的位置leftAdapter.setSelect(position);//用来给右侧传递左侧的下标rightAdapter.setSelect(position);two.setAdapter(rightAdapter);}});two.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this,Data[select][position],Toast.LENGTH_SHORT).show();}});

MainActivity就是给ListVIew设置显示的数据,和传递下标,就是这么简单。

看一下LeftAdapter:

public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {convertView = inflate(context, R.layout.listview_item_one, null);holder = new ViewHolder();holder.tv = convertView.findViewById(R.id.item_one);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}LinearLayout.LayoutParams selectParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);selectParams.setMargins(1,1,0,0);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);params.setMargins(1,0,1,0);if (position == select) {holder.tv.setBackgroundColor(Color.parseColor("#ffffff"));holder.tv.setLayoutParams(selectParams);} else {holder.tv.setBackgroundColor(Color.parseColor("#dedede"));holder.tv.setLayoutParams(params);}holder.tv.setText(mMenu[position]);return convertView;}public void setSelect(int index) {select = index;}private class ViewHolder {TextView tv;}

我这里继承的是baseAdapter,继承后实现几个必要的方法,这里我们就只关注getView这个方法。其中

  LinearLayout.LayoutParams selectParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);selectParams.setMargins(1,1,0,0);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);params.setMargins(1,0,1,0);

这两个在这里是TextView告诉他父布局LinearLayout他想要的参数,setMargins是给左侧item设置偏移,如果不设置就会是这样

可以看到每个Item有间距,然后判断position的位置是否是选择的位置设置背景颜色。

RightAdapter和LeftAdapter是差不多一样的,就只是 设置显示的时候不一样:

  @Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if (convertView == null) {convertView = View.inflate(context, R.layout.listview_item_two, null);viewHolder = new ViewHolder();viewHolder.tv = convertView.findViewById(R.id.item_two);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.tv.setText(Data[select][position]);return convertView;}public void setSelect(int index) {this.select = index;}private class ViewHolder {TextView tv;}
}

他这里显示是左侧下标的数据

 viewHolder.tv.setText(Data[select][position]);

好了这就是listview的一个简单联动。

Android类似电商类的多级选择相关推荐

  1. 平台电商类的增长策略:从用户激励到养成类游戏

    为什么这些产品都陆续上线了游戏? 随着国内互联网的人口红利逐渐消失,整个互联网开始从增量市场进入存量市场 当用户增长遇到瓶颈时,要提高产品的商业价值就要做更加精细化的运营,搭建用户激励体系,盘活现有用 ...

  2. 使用uni-app完成电商类小程序流程

    推荐使用hbuilderX 创建项目和运行项目 全局配置 pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径. 窗口样式.原生的导航栏.底部的原生tabbar 等. 它 ...

  3. 百合网婚礼产品总监徐德生:电商类产品的转化率为何总是令人心碎?

    1. 影响ctr(点击通过率)的核心要素有哪些?是否可以通过方法做到ctr转化低时判断是哪些要素影响的,如何判断? 问题描述:如题,工作中遇到同类的问题,在想是否可以在某个案例ctr低的时候,能够判断 ...

  4. android电商平台,基于Android的电商平台通用客户端的设计与实现

    摘要: 随着移动互联网的高速发展,电子商务已经由过去的PC端逐渐进入了移动时代.一方面,对于处于创业阶段的电商平台运营者来说,由于资金不足,开发人员不足,很难在短时间内拥有电商平台的手机客户端.另一方 ...

  5. 微信试行松绑外链:点对点聊天可直接访问,群聊试开放电商类外链

    11月29日,从微信获悉,为进一步落实"以安全为底线,分阶段.分步骤"实施的互联互通方案,在有关监管部门指导下,微信于即日起开始对外部链接管理措施进行更新.更新内容如下: 1.在点 ...

  6. 小程序影藏溢出的gif_分享几个优质开源项目 | 电商类app,趣享 gif,研发助手DoraemonKit,github小程序...

    本来想一个个分享,这样标题比较好起,不过感觉有点少,那就不定期攒一些分享吧.其中部分来源投稿,有些是我自己无意发现的. 1非常方便的 github 小程序员 经常想在手机上看一些最新的github项目 ...

  7. 电商类小程序开发审核及其他注意事项

    一.电商类小程序需要什么资质? 1.总的来说任何微信小程序所涉及的服务不超过5类,在单月内允许有三次的修改.资质方面的要求很严格,如果该小程序具有A类目的资质,但却具有B类目的服务,那么这样跨界的情况 ...

  8. html大作业网页代码 化妆品购物商城网站设计——电商类化妆品购物商城(1页) HTML+CSS+JavaScript 关于电商类的HTML网页设计-----化妆品

    HTML5期末大作业:化妆品购物商城网站设计--电商类化妆品购物商城(1页) HTML+CSS+JavaScript 关于电商类的HTML网页设计-----化妆品 常见网页设计作业题材 文章目录 HT ...

  9. UI设计:使用PS(Photoshop)绘制一款电商类App

    UI设计:使用PS(Photoshop)绘制一款电商类App 一.设计理念 1.小智电商App主要进行的是自行车的交易 2.小智App只要以紫色系为应用的背景色,其中包括紫色的一个渐变和添加一定的透明 ...

最新文章

  1. 客户管理系统企业客户管理crm客户管理
  2. AndroidStudio 集成环信的一个坑
  3. html正则表达式search,正则表达式解析关键字和标签的搜索字段([])
  4. .NET EFCore之增删改查
  5. java 如何排查内存溢出_java 内存溢出排查
  6. 【英语学习】【WOTD】inexorable 释义/词源/示例
  7. Global.asax取绝对路径
  8. Axure rp 8 基本用法图解之一
  9. 前端菜鸟浅谈Web前端开发技术
  10. ASCII表,二进制、十进制对照表
  11. 从日企和水浒传看企业如何转型
  12. k8s集群安装traefik 2.x (保证成功版)
  13. matlab求解一元函数积分,matlab实现一元函数积分
  14. 兜兜转转,华为与李一男终于在汽车行业重逢,两者将展开决战?
  15. 2021-2027全球与中国筒式过滤器外壳市场现状及未来发展趋势
  16. 课程教学c语言遇到的问题,C语言教学中的几点思考
  17. Spring boot 中使用 Thymeleaf
  18. matlab 局部寻根,MATLAB算法の二分法全局寻根
  19. 内存不能为读的解决办法
  20. UDF函数开发中的坑

热门文章

  1. Sql server基本语句(增删改查)
  2. 系统架构设计师 2:计算机系统
  3. android 前摄屏幕补光,前后800万摄像头/配前置补光灯_富可视 M2_手机Android频道-中关村在线...
  4. 火山视窗选择框,分组框,单选框,状态条,工具条组件介绍
  5. csdn博客里的图片去水印
  6. Non-terminating decimal expansion; no exact representable decimal result. 的恩恩怨怨
  7. Mybatis持久层框架MBGExample类详解
  8. 【杂项】python将图片转成Excel单元格显示;Excel生成图片
  9. SpringMVC ajax传值问题
  10. 已从印象笔记转到语雀