效果图.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. node--CommonJS
  2. MySQL如何修改密码
  3. InvokeHelper,让跨线程访问/修改主界面控件不再麻烦(转)
  4. 【DP】Mod Mod Mod(CF889E)
  5. 按小时分组mysql 补齐_分组记录按小时或按天白天和mysql的
  6. 运行QQ出现initialization failure 0x0000000c错误和浏览器上不了网
  7. 关系数据库——mysql数据类型大总结
  8. 服务监控 Spring Boot Actuator 介绍
  9. django+nginx+uwsgi项目部署文档整理
  10. 事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步
  11. git 如何忽略掉文件夹_如何使git忽略某些文件或文件夹
  12. CentOS 6.5 安装 Redis 执行 make #error Newer version of jemalloc required
  13. 关于var、let和const
  14. 三菱PLC Q系列大型程序伺服12轴Q01U RS232通讯CCD 应用
  15. 今年还能回家过年吗?查询下各地出行隔离政策
  16. [高数]y=arccosx,y=arcsinx和y=arctanx的图像
  17. 轻量级神经网络MobileNet全家桶详解
  18. oracle千万级数据量的表关联更新
  19. vsftpd 编译安装 及 隐藏版本号
  20. 解析路飞惊人战斗力由何而来

热门文章

  1. 【Kotlin 】Kotlin基础
  2. 结构化查询语言(Structured Query Language)与数据库分类
  3. 威洛特:猫犬咽炎的症状及治疗方法
  4. 计算机硬件与软件的介绍,计算机软件与硬件介绍.ppt.ppt
  5. android:ellipsize=end 不起作用,Android ellipsize 使用以及设置没有效果问题
  6. 趣动互娱张继:手游产品存在生命周期, 管理才是公司长青的王道
  7. 00 如何设计一个秒杀系统——秒杀系统架构设计都有哪些关键点
  8. 【社区榜单】TensorFlow 社区双周问答贡献光荣榜(第一期)
  9. 井盖异动报警器-智能窨井盖管理系统
  10. 线程的状态和安全问题