最近接了一个项目,要仿照京东写一个商品分类页,但需要滑动右边子分类,左边的主分类也跟着变换,写了个demo,需要的同学可以自取。

先放一个写完之后的样子:
写这个需求的思路也很清晰,首先左边肯定是一个listView,右边也是一个listView,这两个listView要达到一个联动的效果。右边的listView再嵌套一个GridView即可。如下图所示。
所以,我们需要的数据结构也就确定了,应该是数组套数组,也就说护肤大分类下又有子分类商品,类似于这个样子:
ok,数据和UI结构确定了,就可以编写代码了
1、先确定主体结构,即两个listView
先不用管上面那个Hello World,那块儿只是想做一个吸顶的效果
2、将左侧数据和右侧数据分别渲染
2.1渲染左侧数据,即:
menuAdapter = new MenuAdapter(this, menuList); lv_menu.setAdapter(menuAdapter);
很简单就不赘述了,底部会附上完整代码链接
2.2渲染右侧数据
homeAdapter = new HomeAdapter(this, homeList); lv_home.setAdapter(homeAdapter);
在HomeAdapter还需要在嵌套gridView,如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CategoryBean.DataBean dataBean = foodDatas.get(position);
List<CategoryBean.DataBean.DataListBean> dataList = dataBean.getDataList();
ViewHold viewHold = null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_home, null);
viewHold = new ViewHold();
viewHold.gridView = (GridViewForScrollView) convertView.findViewById(R.id.gridView);
viewHold.blank = (TextView) convertView.findViewById(R.id.blank);
convertView.setTag(viewHold);
} else {
viewHold = (ViewHold) convertView.getTag();
}
HomeItemAdapter adapter = new HomeItemAdapter(context, dataList);
viewHold.blank.setText(dataBean.getModuleTitle());
viewHold.gridView.setAdapter(adapter);
return convertView;
}
private static class ViewHold {
private GridViewForScrollView gridView;
private TextView blank;
}
这里需要说明两点,第一:由于listView嵌套gridView会有众所周知的问题,计算高度,所以这边需要重新测量高度,也就重写了gridView;第二:代码中的textView是每个子标题中主标题的名字,也就是需要吸在顶部的。
以上,就将数据已经可以渲染完成了,现在就是联动的问题
3、让两部分数据动起来
3.1 主数据联动子数据
只需要调用主数据的onItemClick()方法,右侧数据在复写方法中调用setSelection()方法即可
lv_menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
menuAdapter.setSelectItem(position);
menuAdapter.notifyDataSetInvalidated();
tv_title.setText(menuList.get(position));
lv_home.setSelection(showTitle.get(position));
}
});
3.2 子数据联动主数据
在onScroll中处理数据即可,在将主数据的adapter更新一下即可。如代码所示
lv_home.setOnScrollListener(new AbsListView.OnScrollListener() {
private int scrollState;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.scrollState = scrollState;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
return;
}
int current = showTitle.indexOf(firstVisibleItem);
if (currentItem != current && current >= 0) {
currentItem = current;
tv_title.setText(menuList.get(currentItem));
menuAdapter.setSelectItem(currentItem);
menuAdapter.notifyDataSetInvalidated();
}
}
});
4、吸顶效果
这边有几种方法都可以实现类似的效果,我这边是上面一直有一条,我再将子数据都加一个type,当type不同时,更换上面那一条的问题即可。
最后,附上git链接直达链接
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 商品分类页
# Android仿京东商品分类
# Android中RecyclerView实现商品分类功能
# 也就
# 写了
# 所示
# 是一个
# 会有
# 确定了
# 就不
# 又有
# 要在
# 这两个
# 数据结构
# 也很
# 很简单
# 就说
# 只需要
# 可以实现
# 就将
# 想做
# 类似于
# 接了
相关文章:
高端智能建站公司优选:品牌定制与SEO优化一站式服务
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何设置并定期更换建站之星安全管理员密码?
如何用已有域名快速搭建网站?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
建站主机与服务器功能差异如何区分?
建站之星如何快速生成多端适配网站?
如何通过VPS搭建网站快速盈利?
Android自定义控件实现温度旋转按钮效果
如何在万网自助建站平台快速创建网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何选择高效稳定的ISP建站解决方案?
如何在橙子建站上传落地页?操作指南详解
如何通过cPanel快速搭建网站?
中山网站推广排名,中山信息港登录入口?
重庆市网站制作公司,重庆招聘网站哪个好?
建站之星安装提示数据库无法连接如何解决?
深入理解Android中的xmlns:tools属性
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
北京网站制作网页,网站升级改版需要多久?
北京专业网站制作设计师招聘,北京白云观官方网站?
代购小票制作网站有哪些,购物小票的简要说明?
如何在阿里云服务器自主搭建网站?
建站之星安装步骤有哪些常见问题?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
动图在线制作网站有哪些,滑动动图图集怎么做?
建站之星图片链接生成指南:自助建站与智能设计教程
电商网站制作价格怎么算,网上拍卖流程以及规则?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
韩国服务器如何优化跨境访问实现高效连接?
代刷网站制作软件,别人代刷火车票靠谱吗?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
公司网站设计制作厂家,怎么创建自己的一个网站?
威客平台建站流程解析:高效搭建教程与设计优化方案
定制建站如何定义?其核心优势是什么?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在服务器上三步完成建站并提升流量?
建站之星如何助力网站排名飙升?揭秘高效技巧
,石家庄四十八中学官网?
如何快速登录WAP自助建站平台?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何快速配置高效服务器建站软件?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何用PHP工具快速搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。