效果图.gif

注:数据是别人大神的

我们看下我们的json数据结构

数据结构.png

实现思路;

1.首先我们需要解析(我的放在本地assets文件夹下面名字为category.json)数据,将.json数据转换成string

/**

* 得到json文件中的内容

*/

public static String getJson(Context context, String fileName) {

StringBuilder stringBuilder = new StringBuilder();

//获得assets资源管理器

AssetManager assetManager = context.getAssets();

//使用IO流读取json文件内容

try {

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(

assetManager.open(fileName), "utf-8"));

String line;

while ((line = bufferedReader.readLine()) != null) {

stringBuilder.append(line);

}

} catch (IOException e) {

e.printStackTrace();

}

return stringBuilder.toString();

}

2.将String类型的数据转成相应的对象,并保存左边listview的位置

private void loadData() {

//解析本地的json数据

String json = getJson(this, "category.json");

Gson gson = new Gson();

CategoryBean categoryBean = gson.fromJson(json, CategoryBean.class);

showTitle = new ArrayList<>();

for (int i = 0; i < categoryBean.getData().size(); i++) {

CategoryBean.DataBean dataBean = categoryBean.getData().get(i);

menuList.add(dataBean.getModuleTitle());

showTitle.add(i);

homeList.add(dataBean);

}

tv_title.setText(categoryBean.getData().get(0).getModuleTitle());

menuAdapter.notifyDataSetChanged();

homeAdapter.notifyDataSetChanged();

}

3.我们这时候会发现,我们实际在右边是解析了所有数据,这时候我们需要实现左右两个listview进行关联,首先我们对左边的listview进行点击事件

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(position);

}

});

右边listview滑动事件的处理

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();

}

}

});

android 高仿拼多多,android仿拼多多实现左右分类相关推荐

  1. Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)

    Android MediaRecorder录音录像 暂停 继续录音 播放 ARM格式(音频一) https://blog.csdn.net/WHB20081815/article/details/88 ...

  2. Android 高仿微信群聊头像

    最近小编搞了一个仿微信群聊头像的一个功能,分享给大家... 工作中需要实现仿钉钉群头像的一个功能,就是个人的头像拼到一起显示,看了一下市场上的APP好像微信的群聊头像是组合的,QQ的头像不是,别的好像 ...

  3. android+高仿视频录制,android高仿微信视频编辑页

    android高仿微信视频编辑页-视频多张图片提取 上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑 ...

  4. Android 高仿微信6.0主界面 带你玩转切换图标变色

    目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41087219,本文出自:[张鸿洋的博客] 1.概述 学习And ...

  5. android qq红点,Android高仿QQ小红点功能

    先给大家展示下效果图: 绘制贝塞尔曲线: 主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~ 整体思路: 1.当小红点静 ...

  6. Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码

    Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码 左右側滑效果图 1.主页的实现 直接将DrawerLayout作为根布局,然后其内部第一个View为内容区域,第二个Vie ...

  7. php支付密码控件,Android高仿微信支付密码输入控件实例代码

    这篇文章主要为大家详细介绍了Android高仿微信支付密码输入控件的具体实现代码,供大家参考,具体内容如下 像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现 ...

  8. android+qq底部界面,Android 高仿QQ 界面滑动效果

    Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...

  9. 高仿精仿快播应用android源码下载

    今天给大家在网上找到的一款高仿精仿快播应用android源码,分享给大家,希望大家功能喜欢. 说明源码更新中.... 源码即将上传 也可以到这个网站下载:download 转载于:https://ww ...

  10. android高仿微信视频编辑页-视频多张图片提取

    android高仿微信视频编辑页-视频多张图片提取 上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑 ...

最新文章

  1. cd: mkdir: rmdir: rm
  2. 【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 )
  3. r语言 c 函数返回值,R语言入门 输出函数 cat、print、paste等区别理解
  4. org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
  5. 万能驱动xp离线版_教你用SC封装软件来封装XP系统
  6. MFC中CString类字符串用法小结
  7. 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
  8. python爬虫: 爬一个英语学习网站
  9. C语言房地产销售管理系统,房地产销售管理系统的设计与实现
  10. Labview 气体/温度检测系统
  11. 2021年A特种设备相关管理(电梯)考试题库及A特种设备相关管理(电梯)证考试
  12. 美团前期运营模式(怎么吸引商家入驻?怎么吸引用户?)
  13. 小案例:利用图床自动化批量上传图片并获取图片链接
  14. 妖怪,你可认得这32个关键字?
  15. “刀片嗓”“水泥鼻”“咳出肺”可以这样缓解!
  16. cotex单片机寄存器(cm3为例)
  17. Linux进程和轻量级进程(LWP)
  18. 步进电机五根线怎么接_软启动怎么接电机?软启动电机实物接线图
  19. 这又是一则招聘贴——招聘区块链系统开发的同学
  20. Elasticserch 5.6到Elasticsearch7.11跨版本升级踩坑记录

热门文章

  1. 文件上传漏洞ED01-CMS v20180505 存在任意文件上传漏洞
  2. 免费Zblog采集工具插件-批量管理监控Zblog网站采集发布
  3. 编译原理中的前端和后端
  4. 三星电子拟在苹果后院安置特洛伊木马
  5. CentOS7 查看目录大小
  6. 谷歌浏览器:您的连接不是私密连接
  7. android 辅助服务自动右滑,我的手机启用辅助功能后怎么滑动屏幕,是什么盲人的什么功能,怎么取消?...
  8. gamebryo游戏引擎概要
  9. android uvc驱动apk文件,android 通过usb调用UVC摄像头
  10. 2015年二级建造师《法规》高频考点掌中宝打印版