文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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前后端交互内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯