仿京东首页小分类

实现Android仿京东分类界面的完整教程 本文还有配套的精品资源,点击获取 简介:在Android开发中,实现一个类似京东App的商品分类界面是一个常见的项目需求。本项目详细探讨了创建高效、美观的分类效果所必需的各个组件和技术要点。涉及的关键技术包括使用RecyclerView展示滚动列表,通过GridLayoutManager创建网格布局,自定义Adapter绑定数据,利用CardView提高视觉效果,实现图片懒... 阅读详情

依赖

implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:recyclerview-v7:28.0.0-rc01'
implementation 'com.facebook.fresco:fresco:1.2.0'

xml主布局文件

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="208dp"
    ></android.support.v7.widget.RecyclerView>

分类布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdv"
        android:layout_width="64dp"
        android:layout_height="45dp"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"
        android:src="@drawable/ic_launcher_background"
        />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_below="@id/sdv"
        android:layout_marginLeft="20dp"
        android:text="TextView"
        android:maxEms="4"
        />
</RelativeLayout>

model层

1.bean类

public class ClassifyBean {

    private String code;
    private DataBean data;
    private String message;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public static class DataBean {
        private List<DisplayBean> display;

        public List<DisplayBean> getDisplay() {
            return display;
        }

        public void setDisplay(List<DisplayBean> display) {
            this.display = display;
        }

        public static class DisplayBean {
            /**
             * uid : 100180
             * ordered : 0
             * space : 售楼处/家居别墅/样板间
             * bill : 0
             * evaluate : 0
             * nick_name : 刘卫军
             * avatar : https://app.tuozhe8.com/uploads/avatar/091286e480d0ace52f3e965c462f0061100180.jpeg
             * address : 广东
             * charge : 价格面议
             * intro : 主张以情感美学创造艺术空间,其美学取向分为人本取向与文本取向两种
             */

            private String uid;
            private String ordered;
            private String space;
            private String bill;
            private String evaluate;
            private String nick_name;
            private String avatar;
            private String address;
            private String charge;
            private String intro;

            public String getUid() {
                return uid;
            }

            public void setUid(String uid) {
                this.uid = uid;
            }

            public String getOrdered() {
                return ordered;
            }

            public void setOrdered(String ordered) {
                this.ordered = ordered;
            }

            public String getSpace() {
                return space;
            }

            public void setSpace(String space) {
                this.space = space;
            }

            public String getBill() {
                return bill;
            }

            public void setBill(String bill) {
                this.bill = bill;
            }

            public String getEvaluate() {
                return evaluate;
            }

            public void setEvaluate(String evaluate) {
                this.evaluate = evaluate;
            }

            public String getNick_name() {
                return nick_name;
            }

            public void setNick_name(String nick_name) {
                this.nick_name = nick_name;
            }

            public String getAvatar() {
                return avatar;
            }

            public void setAvatar(String avatar) {
                this.avatar = avatar;
            }

            public String getAddress() {
                return address;
            }

            public void setAddress(String address) {
                this.address = address;
            }

            public String getCharge() {
                return charge;
            }

            public void setCharge(String charge) {
                this.charge = charge;
            }

            public String getIntro() {
                return intro;
            }

            public void setIntro(String intro) {
                this.intro = intro;
            }
        }
    }
}

2.ITask

public interface ITask {
    public void getClassifyBean(String url, OkCallback callback);
}

3.Task

public class Task implements ITask {
    @Override
    public void getClassifyBean(String url, OkCallback callback) {
        OK.getOk().doGet(url,callback);
    }
}

Presenter层

1.

public interface BasePresenter {
    void onDestroy();
}

2.

public interface IPresenter extends BasePresenter{
    public void getClassifyData();
}

3.

public class MyPresenter implements IPresenter {
    ITask task;
    IView view;
    public MyPresenter(MainActivity activity){
        task=new Task();
        view=activity;
    }
    @Override
    public void getClassifyData() {
        task.getClassifyBean("https://app.tuozhe8.com/api.php/api/Lists/designer?token=&version=1.7", new OkCallback() {
            @Override
            public void onUI(String json) {
                Gson gson=new Gson();
                ClassifyBean classifyBean = gson.fromJson(json, ClassifyBean.class);
                List<ClassifyBean.DataBean.DisplayBean> display = classifyBean.getData().getDisplay();
                view.getClassifyShow(display);
            }

            @Override
            public void onFailed(String json) {

            }
        });
    }

    @Override
    public void onDestroy() {
        view=null;
    }
}

View层

1.

public interface IView {
    public void getClassifyShow(List<ClassifyBean.DataBean.DisplayBean>classifys);
}

2.适配器

public class ClassifyAdapter extends RecyclerView.Adapter<ClassifyAdapter.MyViewHolder> {
    private Context context;
    private List<ClassifyBean.DataBean.DisplayBean>list;

    public ClassifyAdapter(Context context) {
        this.context = context;
        this.list=new ArrayList<>();
    }

    public void addData( List<ClassifyBean.DataBean.DisplayBean>Classifys){
        this.list.addAll(Classifys);
        notifyDataSetChanged();
    }
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(context).inflate(R.layout.item_classify,viewGroup,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int i) {
        Uri uri=Uri.parse(list.get(i).getAvatar());
        holder.sdv.setImageURI(uri);
        holder.name.setText(list.get(i).getNick_name());

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
         SimpleDraweeView sdv;
         TextView name;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            sdv=itemView.findViewById(R.id.sdv);
            name=itemView.findViewById(R.id.name);
        }
    }
}

activity

public class MainActivity extends AppCompatActivity implements IView{
    private Banner banner;
    IPresenter presenter;
    private RecyclerView recyclerView;
    private ClassifyAdapter classifyAdapter;
    IProductPresenter productPresenter;
    private RecyclerView recyclerView2;
    private ProductAdapter productAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        presenter=new MyPresenter(this);
        presenter.getClassifyData();

     
        getClassify();
   
    }

   

    public void getClassify() {

        recyclerView=findViewById(R.id.recyclerview);
        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL));

        recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state){
                outRect.left = 12 ;
                outRect.top = 12;
                outRect.top = 12;
            }
        });

        classifyAdapter=new ClassifyAdapter(this);
        recyclerView.setAdapter(classifyAdapter);




    }
   
}

 

DDR内存设计必看:DFI接口协议详解与实战避坑指南(附时序图解析) 本文深入解析了DDR内存设计中连接内存控制器与物理层的DFI接口协议,聚焦于DDR4/DDR5设计的实际痛点。文章详细阐述了协议版本兼容性、时钟架构(匹配频率与频率比系统)、PCB信号完整性设计以及上电初始化与调试等关键环节,为硬件工程师提供了一套从理论到实战的完整避坑指南,并附有时序图解析以助理解。 阅读详情

相关推荐

PLc S7-200 smart如何使用Modbus 485通讯传输接收数据

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。提示:以下是本篇文章正文内容,下面案例可供参考。

xjbsw0的博客 6万+

[Android]仿京东手机端类别页

[Android]仿京东手机端类别页京东手机端的类别标签页, 是一个左侧滑动可选择类别, 右侧一个类别明细的列表联动页面. 当用户选择左侧选项, 可在右侧显示更多选项来选择. 实现方式也不少. 最常见的当然是左侧和右侧各一个Fragment, 左侧Fragment放置ListView, 右侧放显示类别明细的Fragment. 如果觉得页面包含的Fragment太多, 左侧直接给一个ListView就

Alex Tam 的专栏 4352

并行计算:从概念起源到多层次架构设计及其发展历程的全面解析

20世纪70年代,第一台并行计算机于1972年产生(ILLIAC IV,伊利诺依大学),由64个处理器组成,可扩展性好,但可编程性差。如有21亩地需要除草,一个人一天只能除一亩地的草,那么需要21天才能除完草,这在现实中是不太可能的,因庄稼是有时间段的。其二是机群系统是高性能计算机的一种,它的技术基础和工业基础都是商品化和标准化。之所以称为“专用”,并不是说它们只能运行某种应用,是指它们的组成部件是专门设计的,它们的CPU板、内存板和I/O板,甚至操作系统,都是不能在其它系统中使用的。

1654

Android——仿京东淘宝分类页面

效果图: json在assets下 添加依赖:   compile 'com.squareup.okhttp3:okhttp:3.8.1' compile 'com.facebook.fresco:fresco:0.11.0' compile 'com.alibaba:fastjson:1.1.46.android' MainActivitypublic class MainA...

xy8199的博客 1万+

告别效率低谷:用ADS仿真手把手教你设计高回退Doherty功放(附1:2非对称案例)

本文详细解析了如何使用ADS仿真设计高回退Doherty功放,特别针对1:2非对称架构进行深入探讨。通过优化功率分配比、峰值管开启阈值等关键参数,显著提升功放在9dB回退点的效率至75%以上,适用于LTE等高PAPR信号场景。文章还提供了ADS仿真环境搭建、参数优化及工程化设计的实用技巧。

weixin_33743248的博客 457

LCD工程师必看:Pixelclock、Mipi Clk计算全解析(附实用公式)

本文为LCD工程师详细解析了像素时钟(Pixelclock)与MIPI时钟(Mipi Clk)的核心计算方法。文章从时序参数构成入手,通过实战公式推导,系统阐述了从屏幕分辨率、刷新率到最终MIPI速率的高效计算链路,并提供了实用的调试思路与排查清单,帮助工程师快速解决画面撕裂、闪烁等常见问题。

weixin_29266679的博客 391

Android 仿京东分类功能实现

业务需要实现类似京东分类页面的页面效果,原先没有写过类似的这种效果,特此搞个Demo 梳理一下整体的实现流程以及记录下逻辑实现的效果 二,实现思路 RecycleView+Fragment(RecycleView)+观察者动态切换数据 1:左侧是RecycleView 为了实现局部刷新 使用了DiffUtil 处理局部刷新问题 2:右侧是一个Fragment 用了 SmartRefreshLayout,RecycleView处理刷新效果 3.数据通讯使用了 Cla...

馒头 4624

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3919

android+京东分类菜单,Android仿京东商品分类

一.效果图 二.布局文件activity_main.xml布局中left_item.xml布局中在right_item.xml布局中在rigth_item_child.xml在MainActivity.java中public class MainActivity extends AppCompatActivity implements ILeftview, IRightview {private...

weixin_31455121的博客 1179

【科技前沿】用深度强化学习优化电网,让电力调度更聪明!

Hey小伙伴们,今天我要跟大家分享一个超级酷炫的技术应用——深度强化学习在电网优化中的典型案例!如果你对机器学习感兴趣,或是正寻找如何用AI技术解决实际问题的方法,这篇分享绝对不容错过!👩‍💻✨

Jacklx888的博客 3246

ethernet eth0: Could not attach to PHY

整个流程看下来就是MAC connect PHY的过程失败了,失败的具体原因根据config_init,上图(bcm54xx_config_init) ,从此方向入手去定位原因;我这里的问题是has_gmac4没有置1,根据 has_gmac4: uses GMAC4 core.按照上面的调用逻辑,添加了部分打印,定位到__phy_read接口返回失败。stmmac_mdio_read 大部分都是linux的标准接口。最终取决于平台用的是哪家的phy,调用config_init。

无线互联&网络介绍 2702

listview的分类,仿京东分类

listview的分类,今天看到京东的app分类做的很ok,自己也尝试了下,效果实现了. //先上图,京东的,我自己的 //代码很容易就不过多做解释了. //主要的话就是两个方法的使用 //listview.smoothScrollToPosition(0)设置listview到排头 //listview.smoothScrollToPosition(adapter.getCount(

hyf97135的博客 2113

基于STM32的智能鱼缸设计

为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。...

1万+

scrapy爬虫如何解决图书大分类与小分类之间的匹配问题

follwing-sibling following-sibling 选取当前节点之后的所有同级节点,跟preceding-sibling一样都是选取同级同父的节点,只不过following是取对应节点之后的节点,preceding-sibling取的是该节点之前的节点。 1. 遍历京东图书的伪代码: # 获取所有大分类标签dt dt_list = '//*[@id="book...

weixin_45026839的博客 333

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

京东全网爬虫项目

一.确定项目需求 1.1 抓取首页的分类信息 ·抓取数据:各级分类的名称 和 url 001 1.2 商品信息的抓取 ·抓取:商品名称,商品价格,商品评论数量,商品店铺,商品促销,商品选项,商品图片和URL 002 二.开发环境 ·平台:linux ·开发语言:python3 ·开发工具:pycharm ·技术选择: 由于全网爬虫,抓取页面非常的多,为了提高抓取的速度,选择使用scrapy框架+...

qq_45315982的博客 8444

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

商城数据库模板mysql_ecshop 2.7.3仿京东jd商城源码 最新模板jd整站带数据支付插件...

小白不要拍,追求完美的不要拍(世上有100%的完美吗)。本店模板一律带支付宝、网银、快钱,财付通,等常用支付功能。事先声明:分享价,拿了自己研究,不包教,不包会。最近天天教新手使用,累坏了,80%的时间都耗上面了,一个人可以教,但是那么多人,实在教不过来,见谅。商品信息:ecshop2.73仿京东商城整站源码(没有单纯模板,**上的模板都是二次开发的整站源码)服务器空间环境要求:php环境+mys...

weixin_42304618的博客 483

Python爬虫实战--Day03

Python爬虫实战之京东商品信息爬取

weixin_62944327的博客 1605

后端分类需求

图上的这种分类一般可以无限递归下去,一般分类用三张表来做,现在用一张表试试: 1.商品分类表: 1.1 分类类型 type: 1:一级大分类 ; 2:二级分类 ; 3:三级小分类 【可以一直分类下去,我这里需求不复杂,所以只分了三级】。 1.2 父id :每一个类别都有上级分类【一级分类没有】: 看下图:id 为11 的蛋糕 是二级分类,他的上级分类 是 id 为 1 的甜...

迷路人的博客 798

某东全网爬虫——scrapy_redis分布式

某东全网爬虫——scrapy_redis分布式 爬取京东的商品信息,从外层的分类,一步步深入获取商品的详情页信息。 环境:Python3.7 需求: 1、首页的分类信息:各级分类的名称和URL 2、商品信息:商品名称, 商品价格, 商品评论数量, 商品店铺, 商品促销, 商品选项, 商品图片等等 技术选择: 由于全网爬虫, 抓取页面非常多, 为了提高抓的速度, 选择使用scrapy框架 + scr...

downdawn 675

新版花花省淘宝客V6聚合优惠券系统具体功能介绍

主要包括用户鸡蛋数量、足迹、蛋蛋广场、我的好友、邀请好友、兑换鸡蛋、任务和饲料 足迹--用户饲料明细 蛋蛋广场--用户发布一些社区资讯(类似于朋友圈),可以发布图文、视频,其他用户可以评论点赞、收藏等,可以关注用户,可以进入个人主页,查看用户发布的所有帖子和推荐收藏的帖子

清兮科技官方博客 1563

如何建设商城网站?

商城网站建设的过程中,要向淘宝、京东等购物平台看齐,把用户体验做到更好,消除用户的各种疑问,赢得用户信赖,让用户更加便利、放心的购物。作为一个好的购物网站,能让用户自动去收藏该网站,成为网站的忠实用户。那如何建设商城网站建设呢?下面小编来分享几点建议吧。 如何建设商城网站呢?  1、网站视觉效果 在对于商城网站来说,用户进入到首页或是其他页面,首要就是网站的整体风格和设计给用户带来的感受是不一样,...

qq_39581763的博客 606

【android】安卓高仿京东分类页

android 实现商城类app的分类页,高仿哦

GuoguoDad的博客 2084

Java实现仿京东/淘宝首页商品分类的展示!

需求: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;网站首页 - 商品分类展示( 使用缓存 - 提高效率 - 提高用户满意度 ) 1.实现效果如下: (京东-首页分类) 一、需求分析 1.表关系如下: ( 自关联表 - tb_item_cat ) parent_id: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&

XiaoJian的博客 5595

仿京东分类

加依赖//加载 图片用的包 implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' //Gson implementation 'com.google.code.gson:gson:2.6.2' // OkHttp implementation 'com.sq...

qq_41637459的博客 188

Android高仿京东淘宝商品列表布局切换效果

商品列表布局切换效果很常见,因为淘宝京东有的界面下面很多公司都会给风模仿 当然,我们公司也不例外,最近版本更新添加了这个功能; 在项目中直接使用RecyclerView实现切换功能; 如果不了解RecyclerView的可以先看下:  RecyclerView使用详解 使用RecyclerView可以非常简单的实现功能; 第一步:在adapter中重写getItemViewType()方

Zheng 9285

【微信小程序】仿京东商品分类界面

要点: 1、左右两侧可以各自滑动,互不影响 2、flex-wrap的应用 3、切换左侧导航后,右侧显示对应变化,且默认显示在顶部位置

不积跬步无以成千里 2万+

京东分类android实现_Android仿购物阅读类app的分类界面

本文标题是仿购物阅读类app的分类界面,因为大多数app的分类界面都是这样,尤购物类阅读类居多。本文效果是仿京东阅读分类界面。之前无意安装了京东阅读,无意中看到了一个分类界面,感觉效果很好,就想写下来。于是乎有了下面的效果。写好了好长时间了,终于今天找个时间把这个记录下来。效果图京东阅读分裂界面的效果图Demo效果图刚开始写的时候想了个思路是左边利用RecyclerView,右边使用Fr...

weixin_28803437的博客 577
上一篇: Banner轮播图(网络接口实现)
Android_ZMY
博客等级 码龄8年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值