请选择 进入手机版 | 继续访问电脑版

[Android] Android完备 的前后端交互参考案例

[复制链接]
查看71 | 回复9 | 2021-9-14 07:15:06 | 显示全部楼层 |阅读模式
目次

Android 前端获取数据并表现

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

文件创建

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

文件内容

  1. public interface CleaningDisinfectionApi {
  2. //综合查询清洗消毒列表
  3. @POST("formatdisinfection/getPage")
  4. Observable<CleaningDisinfectionData.CleaningDisinfectionInfoList> getCleaningDisinfection(@Header("Range") String page, @Body CleaningDisinfectionData.SearchCleaningDisinfectionRequest searchCleaningDisinfectionRequest);
  5. }
复制代码

POST

内容格式固定,内容根据布局 文档哀求 不同数据组

  1. @POST("formatdisinfection/getPage")
复制代码

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

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

Observable

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

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

  1. getCleaningDisinfection(@Header("Range") String page, @Body CleaningDisinfectionData.SearchCleaningDisinfectionRequest searchCleaningDisinfectionRequest)
复制代码

头部

函数格式确定,
Header为指定的内容,
Body是数据哀求 文件(~~~~~~Data.~~~~~~Request)对象,在此哀求 数据中,一样平常 哀求 整个完备 的对象数据组。
设置数据是根据不同的需求表现 不同的数据。

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

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

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

此函数哀求 完备 的数据组。

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

  1. private String date;//消毒日期
  2. private String amount;//餐具数量
  3. private String coaCode;//企业许可证号
  4. private String coaName;//许可证企业名称
  5. private String entCreditCode;//企业社会信用代码
  6. private String enterpriseName;//企业名称
  7. private String name;//餐具名称
  8. private String way;//消毒方式
  9. private String person;//操作人姓名
  10. private String remark;//备注
  11. private String start;//开始日期
  12. private String end;//结束日期
  13. private String addTime;
  14. private String operator;
  15. private String operatorIp;
  16. private String operatorTime;
  17. private int id;
  18. private int start1;//开始时间 小时
  19. private int start2;//开始时间 分
  20. private int end1;//结束时间 小时
  21. private int end2;//结束时间 秒
  22. private int area;//企业所在区域
  23. private int caId;//从业人员ID
复制代码

哀求
参数

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

  1. public static class CleaningDisinfectionInfoList{
  2. private String MESSAGE;
  3. private String STATUS;
  4. private List<Data> data;
  5. public String getMESSAGE() {
  6. return MESSAGE;
  7. }
  8. public void setMESSAGE(String MESSAGE) {
  9. this.MESSAGE = MESSAGE;
  10. }
  11. public String getSTATUS() {
  12. return STATUS;
  13. }
  14. public void setSTATUS(String STATUS) {
  15. this.STATUS = STATUS;
  16. }
  17. public List<Data> getData() {
  18. return data;
  19. }
  20. public void setData(List<Data> data) {
  21. this.data = data;
  22. }
  23. public static class Data implements Serializable{
  24. private String date;//消毒日期
  25. private String enterpriseName;//企业名称
  26. private String amount;//餐具数量
  27. private String name;//餐具名称
  28. private int area;//企业所在区域
  29. public String getDate() {
  30. return date;
  31. }
  32. public void setDate(String date) {
  33. this.date = date;
  34. }
  35. public String getEnterpriseName() {
  36. return enterpriseName;
  37. }
  38. public void setEnterpriseName(String enterpriseName) {
  39. this.enterpriseName = enterpriseName;
  40. }
  41. public String getAmount() {
  42. return amount;
  43. }
  44. public void setAmount(String amount) {
  45. this.amount = amount;
  46. }
  47. public String getName() {
  48. return name;
  49. }
  50. public void setName(String name) {
  51. this.name = name;
  52. }
  53. public int getArea() {
  54. return area;
  55. }
  56. public void setArea(int area) {
  57. this.area = area;
  58. }
  59. }
  60. }
  61. }
复制代码

成员变量

  1. private String MESSAGE;/
  2. private String STATUS;
  3. private List<Data> data;//变量类型为List,即将获取的数据以List返回
复制代码

返回数据列表设置函数

  1. public static class Data implements Serializable{
  2. private String date;//消毒日期
  3. private String enterpriseName;//企业名称
  4. private String amount;//餐具数量
  5. private String name;//餐具名称
  6. private int area;//企业所在区域
  7. public String getDate() {
  8. return date;
  9. }
  10. public void setDate(String date) {
  11. this.date = date;
  12. }
  13. ············
复制代码

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

数据哀求 以及设定

数据哀求

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

  1. private void getCleanDisinfetionData() {
  2. cleanningdisinfectionApi.getCleaningDisinfection(pageNo+":10", searchCleaningDisinfectionRequest)
  3. .subscribeOn(Schedulers.io())
  4. .observeOn(AndroidSchedulers.mainThread())
  5. .subscribe(new Observer<CleaningDisinfectionData.CleaningDisinfectionInfoList>() {
  6. @Override
  7. public void onSubscribe(Disposable d) {
  8. Log.d(TAG, "onSubscribe:");
  9. }
  10. @Override
  11. public void onNext( CleaningDisinfectionData.CleaningDisinfectionInfoList list) {
  12. Log.d(TAG, "onNext:");
  13. if (list != null&&list.getSTATUS().equals("200") && list.getData() != null) {
  14. cleanDisinfectionList.addAll(list.getData());
  15. setListData();
  16. }
  17. }
  18. @Override
  19. public void onError(Throwable e) { Log.d(TAG, "onError:" + e.getMessage());}
  20. @Override
  21. public void onComplete() {
  22. Log.d(TAG, "onComplete:");
  23. }
  24. });
  25. }
复制代码

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

数据表现

  1. private void setListData(){
  2. mainScroll.setAdapter(new CleaningDisinfectionAdapter(cleanDisinfectionList));
  3. if (RetrofitSingleton.dataNumber!=null){
  4. if (Integer.parseInt(RetrofitSingleton.dataNumber)<10000){
  5. resultNum.setText(RetrofitSingleton.dataNumber+"(家)");
  6. }
  7. else {
  8. resultNum.setText("10000+(家)");
  9. }
  10. if(cleanDisinfectionList.size()==Integer.parseInt(RetrofitSingleton.dataNumber)){
  11. Toast.makeText(FoodOperationSearchActivity.this,"已加载全部数据",Toast.LENGTH_SHORT).show();
  12. mRefreshLayout.setEnableLoadMore(false);
  13. }else {
  14. mRefreshLayout.setEnableLoadMore(true);
  15. }
  16. }
  17. }
复制代码

数据表现 模块,将哀求 到的数据传递到Adapter中,利用 本身 设置的Adapter完成数据表现 。

Adapter(适配器)设置

  1. package com.upc.txgc.intelligentmarket2021.Views;
  2. import android.graphics.drawable.GradientDrawable;
  3. import android.support.annotation.NonNull;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.util.Log;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.TextView;
  10. import com.upc.txgc.intelligentmarket2021.HttpRequests.HttpObjects.CleaningDisinfectionData;
  11. import com.upc.txgc.intelligentmarket2021.HttpRequests.HttpObjects.LicenseData;
  12. import com.upc.txgc.intelligentmarket2021.R;
  13. import com.zzhoujay.richtext.spans.LongClickable;
  14. import org.greenrobot.eventbus.EventBus;
  15. import java.util.List;
  16. public class CleaningDisinfectionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
  17. private static final String TAG = "CleaningDisinfection";
  18. private final List<CleaningDisinfectionData.CleaningDisinfectionInfoList.Data> mData;
  19. public static class ItemClickListener implements View.OnClickListener {
  20. private CleaningDisinfectionData.CleaningDisinfectionInfoList.Data cleandisinfectionList;
  21. private int position;
  22. public void onClick(View v) {
  23. if (cleandisinfectionList != null) {
  24. Log.d(TAG, "position:" + position);
  25. EventBus.getDefault().post(cleandisinfectionList);
  26. //设置点击效果
  27. //statusChange(v);
  28. }
  29. }
  30. }
  31. public static class ScrollVH extends RecyclerView.ViewHolder {
  32. private View mView;
  33. private TextView enterpriseName;//企业名称
  34. private TextView enterpriseArea;//企业所在区域
  35. private TextView disinfectionDate;//消毒日期
  36. private TextView name;//物品名称
  37. private TextView amount;//物品数量
  38. GradientDrawable statusDrawable = new GradientDrawable();
  39. GradientDrawable licenseStatusDrawable = new GradientDrawable();
  40. //创建自己的view
  41. public ScrollVH(View v) {
  42. super(v);
  43. mView = v;
  44. enterpriseName = v.findViewById(R.id.enterprise_name);
  45. enterpriseArea = v.findViewById(R.id.enterprise_area);
  46. disinfectionDate = v.findViewById(R.id.disinfection_date);
  47. name = v.findViewById(R.id.name);
  48. amount = v.findViewById(R.id.amount);
  49. }
  50. }
  51. //数据传递
  52. public CleaningDisinfectionAdapter(List<CleaningDisinfectionData.CleaningDisinfectionInfoList.Data>data){
  53. this.mData = data;
  54. }
  55. //绑定适配器界面
  56. @Override
  57. public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  58. View view = LayoutInflater.from(parent.getContext())
  59. .inflate(R.layout.adapter_cleandisinfection, parent,
  60. false);
  61. return new ScrollVH(view);
  62. }
  63. //设置数据
  64. @Override
  65. public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
  66. if (holder instanceof ScrollVH) {
  67. ScrollVH viewHolder = (ScrollVH) holder;
  68. if (mData.get(position).getEnterpriseName() != null) {
  69. viewHolder.enterpriseName.setText(mData.get(position).getEnterpriseName());
  70. }
  71. if (mData.get(position).getDate() != null){
  72. viewHolder.disinfectionDate.setText(mData.get(position).getDate());
  73. }
  74. //if (mData.get(position).getArea() != null){
  75. // viewHolder.enterpriseArea.setText(mData.get(position).getArea());
  76. //}
  77. if (mData.get(position).getAmount() != null){
  78. viewHolder.amount.setText(mData.get(position).getAmount());
  79. }
  80. if(mData.get(position).getName()!=null){
  81. viewHolder.name.setText(mData.get(position).getName());
  82. }
  83. }
  84. }
  85. @Override
  86. public int getItemCount() {
  87. return mData.size();
  88. }
  89. }
复制代码

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

到此这篇关于Android完备 的前后端交互参考案例的文章就先容 到这了,更多干系 Android前后端交互内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 陈辞滥调 | 2021-9-21 03:24:33 | 显示全部楼层
admin楼主,您主治大夫在到处找您呢!
回复

使用道具 举报

avatar 迟到399 | 2021-9-26 23:31:47 | 显示全部楼层
楼上的很有激情啊!
回复

使用道具 举报

avatar 风云18171265739 | 2021-10-4 10:06:21 | 显示全部楼层
有内涵!
回复

使用道具 举报

avatar gnmpmnuy35327 | 2021-10-8 02:44:55 | 显示全部楼层
论坛的帖子越来越有深度了!
回复

使用道具 举报

avatar 空城乱人心乱 | 2021-10-8 16:57:50 | 显示全部楼层
楼上是GG还是MM啊?
回复

使用道具 举报

avatar 便宜老鼠药沼 | 2021-10-9 08:28:58 | 显示全部楼层
admin楼主说的我也略懂!
回复

使用道具 举报

avatar 做农告根乎 | 2021-10-12 05:53:47 | 显示全部楼层
我和我的小伙伴都惊呆了!
回复

使用道具 举报

avatar 崔炫俊献 | 2021-10-12 19:29:59 | 显示全部楼层
论坛的人气不行了!
回复

使用道具 举报

我只是来赚积分的!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则