返回顶部
首页 > 资讯 > 移动开发 >Android完整的前后端交互参考案例
  • 524
分享到

Android完整的前后端交互参考案例

2024-04-02 19:04:59 524人浏览 八月长安
摘要

目录api 连接获取(~~Api.java)文件创建文件内容POSTObservable数据请求以及设定(~~Data.java)数据请求函数(public static class

Android 前端获取数据并显示

API 连接获取(~~Api.java)

文件创建

新建Kotlin class/file 中的 Interface 文件。

文件内容


public interface CleaningDisinfectionApi {
    //综合查询清洗消毒列表
    @POST("fORMatdisinfection/getPage")
    Observable<CleaningDisinfectionData.CleaningDisinfectionInfoList> getCleaningDisinfection(@Header("Range") String page, @Body CleaningDisinfectionData.SearchCleaningDisinfectionRequest searchCleaningDisinfectionRequest);
}

POST

内容格式固定,内容根据结构文档请求不同数据组


@POST("formatdisinfection/getPage")

其格式固定,POST后内容代表根据接口文档进行填写。

在此接口中,请求数据组如图所示==

Observable


Observable<CleaningDisinfectionData.CleaningDisinfectionInfoList> getCleaningDisinfection(@Header("Range") String page, @Body CleaningDisinfectionData.SearchCleaningDisinfectionRequest searchCleaningDisinfectionRequest);

CleaningDisinfectionData.CleaningDisinfectionInfoList

返回数据列表,数据内容根据需求自行设计


getCleaningDisinfection(@Header("Range") String page, @Body CleaningDisinfectionData.SearchCleaningDisinfectionRequest searchCleaningDisinfectionRequest)

头部

函数格式确定,
Header为指定的内容,
Body是数据请求文件(~~~~~~Data.~~~~~~Request)对象,在此请求数据中,一般请求整个完整的对象数据组。
设置数据是根据不同的需求显示不同的数据。

数据请求以及设定(~~Data.java)

此部分主要完成利用Api接口,完成完整数据组的获取,以及根据不同需求设定不同的返回数据列表。

数据请求函数(public static class ~~~Request)

此函数请求完整的数据组。

即*根据接口文档参数内容,定义所有的成员变量,并于文档参数一一对应*,并定义其get和set方法。


private String date;//消毒日期
        private String amount;//餐具数量
        private  String coaCode;//企业许可证号
        private String coaName;//许可证企业名称
        private String entCreditCode;//企业社会信用代码
        private String enterpriseName;//企业名称
        private String name;//餐具名称
        private String way;//消毒方式
        private String person;//操作人姓名
        private String remark;//备注
        private String start;//开始日期
        private String end;//结束日期
        private String addTime;
        private String operator;
        private String operatorIp;
        private String operatorTime;


        private int id;
        private int start1;//开始时间 小时
        private int start2;//开始时间 分
        private int end1;//结束时间 小时
        private int end2;//结束时间  秒
        private int area;//企业所在区域
        private int caid;//从业人员ID

请求参数

数据返回列表函数( public static class ~~~List)


public static class CleaningDisinfectionInfoList{
        private String MESSAGE;
        private String STATUS;
        private List<Data> data;

        public String getMESSAGE() {
            return MESSAGE;
        }

        public void setMESSAGE(String MESSAGE) {
            this.MESSAGE = MESSAGE;
        }

        public String getSTATUS() {
            return STATUS;
        }

        public void setSTATUS(String STATUS) {
            this.STATUS = STATUS;
        }

        public List<Data> getData() {
            return data;
        }

        public void setData(List<Data> data) {
            this.data = data;
        }

        public static class Data implements Serializable{
            private String date;//消毒日期
            private String enterpriseName;//企业名称
            private String amount;//餐具数量
            private String name;//餐具名称
            private int area;//企业所在区域
            
            public String getDate() {
                return date;
            }

            public void setDate(String date) {
                this.date = date;
            }

            public String getEnterpriseName() {
                return enterpriseName;
            }

            public void setEnterpriseName(String enterpriseName) {
                this.enterpriseName = enterpriseName;
            }

            public String getAmount() {
                return amount;
            }

            public void setAmount(String amount) {
                this.amount = amount;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public int getArea() {
                return area;
            }

            public void setArea(int area) {
                this.area = area;
            }
        }
    }
}

成员变量


		private String MESSAGE;/
        private String STATUS;
        private List<Data> data;//变量类型为List,即将获取的数据以List返回

返回数据列表设置函数


public static class Data implements Serializable{
            private String date;//消毒日期
            private String enterpriseName;//企业名称
            private String amount;//餐具数量
            private String name;//餐具名称
            private int area;//企业所在区域
public String getDate() {
                return date;
            }

            public void setDate(String date) {
                this.date = date;
            }
            ············

定义返回数据列表中的成员变量,并设定其getData和setData方法。

数据请求以及设定

数据请求

数据请求及设定在activity中完成。


private void getCleanDisinfetionData() {
        cleanningdisinfectionApi.getCleaningDisinfection(pageNo+":10", searchCleaningDisinfectionRequest)
                                .subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .subscribe(new Observer<CleaningDisinfectionData.CleaningDisinfectionInfoList>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {
                                        Log.d(TAG, "onSubscribe:");
                                    }

                                    @Override
                                    public void onNext( CleaningDisinfectionData.CleaningDisinfectionInfoList list) {
                                        Log.d(TAG, "onNext:");
                                        if (list != null&&list.getSTATUS().equals("200") && list.getData() != null) {
                                            cleanDisinfectionList.addAll(list.getData());
                                            setListData();
                                        }
                                    }

                                    @Override
                                    public void onError(Throwable e) { Log.d(TAG, "onError:" + e.getMessage());}

                                    @Override
                                    public void onComplete() {
                                        Log.d(TAG, "onComplete:");
                                    }
                                });
    }
   

数据请求操作格式固定,即在activity中调用~~~Api进行请求数据,并将请求到的数据返回到List中。

数据显示


private void setListData(){
        mainScroll.setAdapter(new CleaningDisinfectionAdapter(cleanDisinfectionList));
        if (RetrofitSingleton.dataNumber!=null){
            if (Integer.parseInt(RetrofitSingleton.dataNumber)<10000){
                resultNum.setText(RetrofitSingleton.dataNumber+"(家)");
            }
            else {
                resultNum.setText("10000+(家)");
            }
            if(cleanDisinfectionList.size()==Integer.parseInt(RetrofitSingleton.dataNumber)){
                Toast.makeText(FoodOperationSearchActivity.this,"已加载全部数据",Toast.LENGTH_SHORT).show();
                mRefreshLayout.setEnableLoadMore(false);
            }else {
                mRefreshLayout.setEnableLoadMore(true);
            }
        }
    }

数据显示模块,将请求到的数据传递到Adapter中,利用自己设置的Adapter完成数据显示。

Adapter(适配器)设置


package com.upc.txGC.intelligentmarket2021.Views;

import android.graphics.drawable.GradientDrawable;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.upc.txgc.intelligentmarket2021.HttpRequests.HttpObjects.CleaningDisinfectionData;
import com.upc.txgc.intelligentmarket2021.HttpRequests.HttpObjects.LicenseData;
import com.upc.txgc.intelligentmarket2021.R;
import com.zzhoujay.richtext.spans.LongClickable;
import org.greenrobot.eventbus.EventBus;

import java.util.List;


public class CleaningDisinfectionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private static final String TAG = "CleaningDisinfection";
    private final List<CleaningDisinfectionData.CleaningDisinfectionInfoList.Data> mData;


    public static class ItemClickListener implements View.OnClickListener {

        private CleaningDisinfectionData.CleaningDisinfectionInfoList.Data cleandisinfectionList;
        private int position;

        public void onClick(View v) {
            if (cleandisinfectionList != null) {
                Log.d(TAG, "position:" + position);
                EventBus.getDefault().post(cleandisinfectionList);

                //设置点击效果
                //statusChange(v);
            }
        }
    }

    public static class ScrollVH extends RecyclerView.ViewHolder {
        private View mView;
        private TextView enterpriseName;//企业名称
        private TextView enterpriseArea;//企业所在区域
        private TextView disinfectionDate;//消毒日期
        private TextView name;//物品名称
        private TextView amount;//物品数量
        GradientDrawable statusDrawable = new GradientDrawable();
        GradientDrawable licenseStatusDrawable = new GradientDrawable();


//创建自己的view
        public ScrollVH(View v) {
            super(v);
            mView = v;
            enterpriseName = v.findViewById(R.id.enterprise_name);
            enterpriseArea = v.findViewById(R.id.enterprise_area);
            disinfectionDate = v.findViewById(R.id.disinfection_date);
            name = v.findViewById(R.id.name);
            amount = v.findViewById(R.id.amount);
        }
    }
    //数据传递

    public CleaningDisinfectionAdapter(List<CleaningDisinfectionData.CleaningDisinfectionInfoList.Data>data){
        this.mData = data;
    }



    //绑定适配器界面
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_cleandisinfection, parent,
                        false);
        return new ScrollVH(view);
    }

    //设置数据
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ScrollVH) {

            ScrollVH viewHolder = (ScrollVH) holder;
            if (mData.get(position).getEnterpriseName() != null) {
                viewHolder.enterpriseName.setText(mData.get(position).getEnterpriseName());
            }
            if (mData.get(position).getDate() != null){
                viewHolder.disinfectionDate.setText(mData.get(position).getDate());
            }
            //if (mData.get(position).getArea() != null){
               // viewHolder.enterpriseArea.setText(mData.get(position).getArea());
            //}
            if (mData.get(position).getAmount() != null){
                viewHolder.amount.setText(mData.get(position).getAmount());
            }
            if(mData.get(position).getName()!=null){
                viewHolder.name.setText(mData.get(position).getName());
            }

        }
    }

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

将数据通过构造函数传递至适配器之中。

到此这篇关于Android完整的前后端交互参考案例的文章就介绍到这了,更多相关Android前后端交互内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android完整的前后端交互参考案例

本文链接: https://lsjlt.com/news/135301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android完整的前后端交互参考案例
    目录API 连接获取(~~Api.java)文件创建文件内容POSTObservable数据请求以及设定(~~Data.java)数据请求函数(public static class...
    99+
    2024-04-02
  • 原生node.js案例--前后台交互
    本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服务器部分。另外,因为牵涉到服务器,所以这里没法“效果预览”。 执行过程为: (1)在浏览器地址栏输入...
    99+
    2022-06-04
    后台 案例 node
  • SpringMVC与前端交互案例教程
    目录一,创建day13的module二,复习SpringMVC–1,需求:访问/car/get ,获取汽车数据–2,创建RunApp类–3,创建Car类–4,创建CarControl...
    99+
    2024-04-02
  • 前端ajax与后端交互的示例分析
    这篇文章主要介绍了前端ajax与后端交互的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端中常常用的与后端交换数据的话,通常是要用...
    99+
    2024-04-02
  • Android的简单前后端交互(okHttp+springboot+mysql)
    前言 前阵子发现了个有意思又好用的框架——okHttp。由于课程设计需要,无意间发现了这个框架,打算利用此框架与后端交互,可以参考前后端分离的项目,把android当做前端,spri...
    99+
    2024-04-02
  • Vue前端后端的交互方式 axios
    目录语法数据请求封装前言: 大家都知道,只要进行数据交互,肯定就要去请求接口,数据请求的方式有vue-resource axios fetch等方式进行数据集请求...
    99+
    2024-04-02
  • 详解Python flask的前后端交互
    目录前端index.htmlscript.js后端app.py总结场景:按下按钮,将左边的下拉选框内容发送给后端,后端再将返回的结果传给前端显示。 按下按钮之前: 按下按钮之后: ...
    99+
    2024-04-02
  • Node之简单的前后端交互(实例讲解)
    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的。 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学node...
    99+
    2022-06-04
    实例 后端 简单
  • Java前后端交互的一些细节
     在后端进行POST请求后端接收前端数据时,关于PrintWriter:参考地址 注意传进来的对象为空说明未在数据库查到拥有该账号的用户,所以需要告诉前端“账号密码不正确”,如果不为空说明有该用户,所以可以登录。  @Overrid...
    99+
    2023-10-12
    java 交互 servlet 开发语言
  • Vue前后端数据交互与显示的示例分析
    小编给大家分享一下Vue前后端数据交互与显示的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、技术概述将后端所计算的数据呈现在前端页面的相应位置并根据用...
    99+
    2023-06-15
  • 黑马程序员最新版JavaWeb综合案例(前后端完整版)
    JavaWeb 综合案例 学习视频链接: 黑马程序员最新版JavaWeb基础教程,Java web从入门到企业实战完整版 完整代码链接: https://github.com/HaiLei-Fly/JavaWeb-brand 1、功能介绍 ...
    99+
    2023-08-16
    mybatis maven java intellij-idea mysql
  • 前端实现滑动按钮AJAX与后端交互的示例代码
    目录html代码css代码效果图JS事件触发flask后端接口参考链接html代码 <div class="switch-box"> <input id="...
    99+
    2024-04-02
  • 对比前后端接口: 研究常见的前后端交互接口类型
    前后端接口对比: 探究前后端交互中常见的接口类型,需要具体代码示例一、引言随着互联网的快速发展,前后端分离的开发模式逐渐成为主流。在此模式中,前端开发人员和后端开发人员通过接口实现数据的交互和通信。因此,了解不同的接口类型以及其特点对于实现...
    99+
    2023-12-23
    接口类型 前端接口 后端接口
  • Android中WebView与H5前端JS代码交互的示例分析
    这篇文章主要为大家展示了“Android中WebView与H5前端JS代码交互的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中WebView与H5前端JS代码交互的示例分...
    99+
    2023-05-30
    android webview html5
  • Spring MVC前端与后端的ajax交互方法有哪些
    这篇文章主要介绍Spring MVC前端与后端的ajax交互方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方式一 通过URL传参通过URL挂接参数,如/auth/getUs...
    99+
    2024-04-02
  • AJAX SpringBoot 前后端数据交互的项目实现
    目录1. Ajax 概述2. 基于 JQuery 的 AJAX 语法1. Ajax 概述 Ajax 的英文全称是 ”Asynchronous JavaScript and...
    99+
    2024-04-02
  • ajax前后端数据交互的方法有哪些
    在Ajax中,前端和后端之间的数据交互有以下几种方法:1. 使用XMLHttpRequest对象:通过创建XMLHttpReques...
    99+
    2023-08-09
    ajax
  • SpringBoot前后端json数据交互的全过程记录
    目录一、参考文献二、勇敢尝试三、最终选择交互方式总结一、参考文献 原生Ajax与JQuery Ajax SpringMVC接受JSON参数详解及常见错误总结 提交方式为 POST 时...
    99+
    2024-04-02
  • Node.js前后端交互实现用户登陆的实践
    目录一、项目需求二,开始撸代码1,创建前端页面(CSS样式此处省略)2、Node.js后端获取用户输入数据最近学习了一点Node.js的后端知识,于是作为一个学习前端方向的我开始了解...
    99+
    2024-04-02
  • 利用Node.js+Koa框架实现前后端交互的方法
    前言 对于一个前端工程师来说不仅仅要会前端的内容,后端的技术也需要熟练掌握。今天我就要通过一个案例来描述一下前端是如何和后端进行数据交互的。 koa 是由 Express 原班人马打造的,致力于成为一个更小...
    99+
    2022-06-04
    框架 后端 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作