【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 

0.优化

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

1.个人中心页面的布局

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
  1 <?xml version="1.0" encoding="utf-8"?>
  2 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:layout_width="match_parent"
  4     android:layout_height="match_parent"
  5     android:background="@color/app_background">
  6 
  7     <LinearLayout
  8         android:layout_width="match_parent"
  9         android:layout_height="wrap_content"
 10         android:orientation="vertical">
 11 
 12         <!--头像部分-->
 13         <RelativeLayout
 14             android:layout_width="match_parent"
 15             android:layout_height="160dp"
 16             android:background="@android:color/holo_orange_dark">
 17 
 18             <de.hdodenhof.circleimageview.CircleImageView
 19                 android:id="@+id/img_user_avatar"
 20                 android:layout_width="80dp"
 21                 android:layout_height="80dp"
 22                 android:layout_centerHorizontal="true"
 23                 android:layout_marginTop="30dp"
 24                 android:src="@mipmap/avatar" />
 25 
 26             <TextView
 27                 android:layout_width="wrap_content"
 28                 android:layout_height="wrap_content"
 29                 android:layout_alignParentBottom="true"
 30                 android:layout_centerHorizontal="true"
 31                 android:layout_marginBottom="20dp"
 32                 android:text="傅猿猿"
 33                 android:textColor="@android:color/white"
 34                 android:textSize="16sp" />
 35 
 36         </RelativeLayout>
 37 
 38         <!--订单部分-->
 39         <RelativeLayout
 40             android:layout_width="match_parent"
 41             android:layout_height="50dp"
 42             android:background="@android:color/white"
 43             android:orientation="horizontal"
 44             android:paddingLeft="10dp"
 45             android:paddingRight="10dp">
 46 
 47             <TextView
 48                 android:layout_width="wrap_content"
 49                 android:layout_height="match_parent"
 50                 android:layout_alignParentLeft="true"
 51                 android:gravity="center"
 52                 android:text="我的订单"
 53                 android:textColor="@android:color/black" />
 54 
 55             <TextView
 56                 android:id="@+id/tv_all_order"
 57                 android:layout_width="wrap_content"
 58                 android:layout_height="match_parent"
 59                 android:layout_toLeftOf="@+id/tv_all_account_arrow"
 60                 android:gravity="center"
 61                 android:text="全部订单"
 62                 android:textColor="@android:color/darker_gray" />
 63 
 64             <com.joanzapata.iconify.widget.IconTextView
 65                 android:id="@+id/tv_all_account_arrow"
 66                 android:layout_width="wrap_content"
 67                 android:layout_height="match_parent"
 68                 android:layout_alignParentEnd="true"
 69                 android:layout_alignParentRight="true"
 70                 android:layout_alignParentTop="true"
 71                 android:layout_marginLeft="10dp"
 72                 android:gravity="center"
 73                 android:text="{fa-chevron-right}"
 74                 android:textColor="@android:color/darker_gray" />
 75 
 76         </RelativeLayout>
 77 
 78         <LinearLayout
 79             android:layout_width="match_parent"
 80             android:layout_height="80dp"
 81             android:background="@android:color/white"
 82             android:baselineAligned="true"
 83             android:orientation="horizontal">
 84 
 85             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 86                 android:id="@+id/ll_pay"
 87                 android:layout_width="0dp"
 88                 android:layout_height="match_parent"
 89                 android:layout_weight="1"
 90                 android:gravity="center"
 91                 android:orientation="vertical">
 92 
 93                 <com.joanzapata.iconify.widget.IconTextView
 94                     android:layout_width="30dp"
 95                     android:layout_height="30dp"
 96                     android:layout_gravity="center_horizontal"
 97                     android:gravity="center"
 98                     android:text="{fa-credit-card}"
 99                     android:textSize="20sp" />
100 
101                 <TextView
102                     android:layout_width="wrap_content"
103                     android:layout_height="wrap_content"
104                     android:layout_gravity="center_horizontal"
105                     android:layout_marginTop="5dp"
106                     android:gravity="center"
107                     android:text="待付款"
108                     android:textSize="10sp" />
109 
110             </LinearLayout>
111 
112             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
113                 android:id="@+id/ll_receive"
114                 android:layout_width="0dp"
115                 android:layout_height="match_parent"
116                 android:layout_weight="1"
117                 android:gravity="center"
118                 android:orientation="vertical">
119 
120                 <com.joanzapata.iconify.widget.IconTextView
121                     android:layout_width="30dp"
122                     android:layout_height="30dp"
123                     android:layout_gravity="center_horizontal"
124                     android:gravity="center"
125                     android:text="{fa-truck}"
126                     android:textSize="20sp" />
127 
128                 <TextView
129                     android:id="@+id/textView"
130                     android:layout_width="wrap_content"
131                     android:layout_height="wrap_content"
132                     android:layout_gravity="center_horizontal"
133                     android:layout_marginTop="5dp"
134                     android:gravity="center"
135                     android:text="待收货"
136                     android:textSize="10sp" />
137 
138             </LinearLayout>
139 
140             <LinearLayout
141                 android:id="@+id/ll_evaluate"
142                 android:layout_width="0dp"
143                 android:layout_height="match_parent"
144                 android:layout_weight="1"
145                 android:gravity="center"
146                 android:orientation="vertical">
147 
148                 <com.joanzapata.iconify.widget.IconTextView
149                     android:layout_width="30dp"
150                     android:layout_height="30dp"
151                     android:layout_gravity="center_horizontal"
152                     android:gravity="center"
153                     android:text="{fa-clone}"
154                     android:textSize="20sp" />
155 
156                 <TextView
157                     android:layout_width="wrap_content"
158                     android:layout_height="wrap_content"
159                     android:layout_gravity="center_horizontal"
160                     android:layout_marginTop="5dp"
161                     android:gravity="center"
162                     android:text="待评价"
163                     android:textSize="10sp" />
164 
165             </LinearLayout>
166 
167             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
168                 android:id="@+id/ll_after_market"
169                 android:layout_width="0dp"
170                 android:layout_height="match_parent"
171                 android:layout_weight="1"
172                 android:gravity="center"
173                 android:orientation="vertical">
174 
175                 <com.joanzapata.iconify.widget.IconTextView
176                     android:layout_width="30dp"
177                     android:layout_height="30dp"
178                     android:layout_gravity="center_horizontal"
179                     android:gravity="center"
180                     android:text="{fa-comments-o}"
181                     android:textSize="20sp" />
182 
183                 <TextView
184                     android:layout_width="wrap_content"
185                     android:layout_height="wrap_content"
186                     android:layout_gravity="center_horizontal"
187                     android:layout_marginTop="5dp"
188                     android:gravity="center"
189                     android:text="售后"
190                     android:textSize="10sp" />
191 
192             </LinearLayout>
193 
194         </LinearLayout>
195 
196         <android.support.v7.widget.RecyclerView
197             android:id="@+id/rv_personal_setting"
198             android:layout_width="match_parent"
199             android:layout_height="match_parent"
200             android:layout_marginTop="20dp" />
201     </LinearLayout>
202 
203 </ScrollView>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【bean的书写】使用建造者模式

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
  1 package com.flj.latte.ec.main.personal.list;
  2 
  3 import android.widget.CompoundButton;
  4 
  5 import com.chad.library.adapter.base.entity.MultiItemEntity;
  6 import com.flj.latte.delegates.LatteDelegate;
  7 
  8 
  9 public class ListBean implements MultiItemEntity {
 10 
 11     private int mItemType = 0;
 12     private String mImageUrl = null; //头像的地址;
 13     private String mText = null;  //名称 
 14     private String mValue = null;
 15     private int mId = 0;
 16     private LatteDelegate mDelegate = null;
 17 //    其中存在checkbox的选择,需要设置一个listener;
 18     private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener = null;
 19 
 20     public ListBean(int mItemType, String mImageUrl, String mText, String mValue, int mId, LatteDelegate mDelegate, CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener) {
 21         this.mItemType = mItemType;
 22         this.mImageUrl = mImageUrl;
 23         this.mText = mText;
 24         this.mValue = mValue;
 25         this.mId = mId;
 26         this.mDelegate = mDelegate;
 27         this.mOnCheckedChangeListener = mOnCheckedChangeListener;
 28     }
 29 
 30     public String getImageUrl() {
 31         
 32         return mImageUrl;
 33     }
 34 
 35     public String getText() {
 36         if (mText == null) {
 37             return "";
 38         }
 39         return mText;
 40     }
 41 
 42     public String getValue() {
 43         if (mValue == null) {
 44             return "";
 45         }
 46         return mValue;
 47     }
 48 
 49     public int getId() {
 50         
 51         return mId;
 52     }
 53 
 54     public LatteDelegate getDelegate() {
 55         return mDelegate;
 56     }
 57 
 58     public CompoundButton.OnCheckedChangeListener getmOnCheckedChangeListener() {
 59         return mOnCheckedChangeListener;
 60     }
 61 
 62     @Override
 63     public int getItemType() {
 64         return mItemType;
 65     }
 66 
 67     public static final class Builder {
 68 
 69         private int id = 0;
 70         private int itemType = 0;
 71         private String imageUrl = null;
 72         private String text = null;
 73         private String value = null;
 74         private CompoundButton.OnCheckedChangeListener onCheckedChangeListener = null;
 75         private LatteDelegate delegate = null;
 76 
 77         public Builder setId(int id) {
 78             this.id = id;
 79             return this;
 80         }
 81 
 82         public Builder setItemType(int itemType) {
 83             this.itemType = itemType;
 84             return this;
 85         }
 86 
 87         public Builder setImageUrl(String imageUrl) {
 88             this.imageUrl = imageUrl;
 89             return this;
 90         }
 91 
 92         public Builder setText(String text) {
 93             this.text = text;
 94             return this;
 95         }
 96 
 97         public Builder setValue(String value) {
 98             this.value = value;
 99             return this;
100         }
101 
102         public Builder setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {
103             this.onCheckedChangeListener = onCheckedChangeListener;
104             return this;
105         }
106 
107         public Builder setDelegate(LatteDelegate delegate) {
108             this.delegate = delegate;
109             return this;
110         }
111 
112         public ListBean build() {
113             return new ListBean(itemType, imageUrl, text, value, id, delegate, onCheckedChangeListener);
114         }
115     }
116 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【适配器的添加】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【item的几种布局-1】带有箭头的item布局

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="50dp"
 5     android:layout_marginBottom="5dp"
 6     android:background="@android:color/white">
 7 
 8     <android.support.v7.widget.AppCompatTextView
 9         android:id="@+id/tv_arrow_text"
10         android:layout_width="wrap_content"
11         android:layout_height="match_parent"
12         android:layout_marginLeft="20dp"
13         android:gravity="center" />
14 
15     <android.support.v7.widget.AppCompatTextView
16         android:id="@+id/tv_arrow_value"
17         android:layout_width="wrap_content"
18         android:layout_height="match_parent"
19         android:layout_marginRight="10dp"
20         android:layout_toLeftOf="@+id/icon_arrow"
21         android:gravity="center"
22         android:text="未设置" />
23 
24     <com.joanzapata.iconify.widget.IconTextView
25         android:id="@+id/icon_arrow"
26         android:layout_width="wrap_content"
27         android:layout_height="match_parent"
28         android:layout_alignParentRight="true"
29         android:layout_marginRight="20dp"
30         android:gravity="center"
31         android:text="{fa-chevron-right}" />
32 
33 </RelativeLayout>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【设置个人中心的数据】当前写一些假的数据;

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【新建type类】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

2. 订单列表逻辑梳理与实现

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【数据】根据不同的tag,不同的数据类型, 展示不同的数据;

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【数据的转换】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【适配器的设置】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【orderList的layout】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="80dp"
 6     android:layout_marginBottom="2dp"
 7     android:background="@android:color/white"
 8     android:orientation="horizontal">
 9 
10     <FrameLayout
11         android:layout_width="0dp"
12         android:layout_height="match_parent"
13         android:layout_weight="1">
14 
15         <android.support.v7.widget.AppCompatImageView
16             android:id="@+id/image_order_list"
17             android:layout_width="70dp"
18             android:layout_height="70dp"
19             android:layout_gravity="center"
20             tools:ignore="RtlHardcoded" />
21     </FrameLayout>
22 
23     <LinearLayout
24         android:layout_width="0dp"
25         android:layout_height="match_parent"
26         android:layout_weight="2"
27         android:orientation="vertical">
28 
29         <android.support.v7.widget.AppCompatTextView
30             android:id="@+id/tv_order_list_title"
31             android:layout_width="match_parent"
32             android:layout_height="0dp"
33             android:layout_gravity="top"
34             android:layout_weight="1"
35             android:text="Title"
36             tools:ignore="NestedWeights" />
37 
38         <LinearLayout
39             android:layout_width="match_parent"
40             android:layout_height="0dp"
41             android:layout_weight="1"
42             android:orientation="horizontal">
43 
44             <android.support.v7.widget.AppCompatTextView
45                 android:id="@+id/tv_order_list_price"
46                 android:layout_width="0dp"
47                 android:layout_height="match_parent"
48                 android:layout_weight="1"
49                 android:gravity="left|center"
50                 android:text="price"
51                 tools:ignore="RtlHardcoded" />
52 
53             <android.support.v7.widget.AppCompatTextView
54                 android:id="@+id/tv_order_list_time"
55                 android:layout_width="0dp"
56                 android:layout_height="match_parent"
57                 android:layout_weight="1"
58                 android:gravity="left|center"
59                 android:text="time"
60                 tools:ignore="RtlHardcoded" />
61         </LinearLayout>
62     </LinearLayout>
63 
64     <com.joanzapata.iconify.widget.IconTextView
65         android:layout_width="0dp"
66         android:layout_height="match_parent"
67         android:layout_weight="1"
68         android:gravity="center"
69         android:text="{fa-chevron-right}"
70         android:textSize="18sp"
71         tools:ignore="HardcodedText" />
72 
73 </LinearLayout>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 package com.flj.latte.ec.main.personal.order;
 2 
 3 import android.annotation.SuppressLint;
 4 import android.support.v7.widget.AppCompatImageView;
 5 import android.support.v7.widget.AppCompatTextView;
 6 
 7 import com.bumptech.glide.Glide;
 8 import com.bumptech.glide.load.engine.DiskCacheStrategy;
 9 import com.bumptech.glide.request.RequestOptions;
10 import com.diabin.latte.ec.R;
11 import com.flj.latte.ui.recycler.MultipleFields;
12 import com.flj.latte.ui.recycler.MultipleItemEntity;
13 import com.flj.latte.ui.recycler.MultipleRecyclerAdapter;
14 import com.flj.latte.ui.recycler.MultipleViewHolder;
15 
16 import java.util.List;
17 
18 public class OrderListAdapter extends MultipleRecyclerAdapter {
19 
20     private static final RequestOptions OPTIONS = new RequestOptions()
21             .diskCacheStrategy(DiskCacheStrategy.ALL)
22             .centerCrop()
23             .dontAnimate();
24 
25     protected OrderListAdapter(List<MultipleItemEntity> data) {
26         super(data);
27         addItemType(OrderListItemType.ITEM_ORDER_LIST, R.layout.item_order_list);
28     }
29 
30     @SuppressLint("SetTextI18n")
31     @Override
32     protected void convert(MultipleViewHolder holder, MultipleItemEntity entity) {
33         super.convert(holder, entity);
34         switch (holder.getItemViewType()) {
35             case OrderListItemType.ITEM_ORDER_LIST:
36                 final AppCompatImageView imageView = holder.getView(R.id.image_order_list);
37                 final AppCompatTextView title = holder.getView(R.id.tv_order_list_title);
38                 final AppCompatTextView price = holder.getView(R.id.tv_order_list_price);
39                 final AppCompatTextView time = holder.getView(R.id.tv_order_list_time);
40 
41                 final String titleVal = entity.getField(MultipleFields.TITLE);
42                 final String timeVal = entity.getField(OrderItemFields.TIME);
43                 final double priceVal = entity.getField(OrderItemFields.PRICE);
44                 final String imageUrl = entity.getField(MultipleFields.IMAGE_URL);
45 
46                 Glide.with(mContext)
47                         .load(imageUrl)
48                         .apply(OPTIONS)
49                         .into(imageView);
50 
51                 title.setText(titleVal);
52                 price.setText("价格:" + String.valueOf(priceVal));
53                 time.setText("时间:" + timeVal);
54                 break;
55             default:
56                 break;
57         }
58     }
59 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【订单页面的布局】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【对recycleView数据的填充】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【图片加载的设置】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【bug】time的修复

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

3. 个人信息的更新实现

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

3.1 个人信息页面的布局

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:background="#f5f5f5"
 6     android:orientation="vertical">
 7 
 8     <android.support.v7.widget.Toolbar
 9         android:background="@android:color/holo_orange_dark"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content" />
12 
13     <android.support.v7.widget.RecyclerView
14         android:id="@+id/rv_user_profile"
15         android:layout_width="match_parent"
16         android:layout_height="match_parent" />
17 
18 </android.support.v7.widget.LinearLayoutCompat>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【对于头像的设置和处理】处理姓名、性别还有头像的修改等等;

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【头像事件的绑定】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

3.3 数据的转化

【UI的绑定】

【源码】com.flj.latte.ec.main.personal.profile.UserProfileDelegate

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 package com.flj.latte.ec.main.personal.profile;
 2 
 3 import android.os.Bundle;
 4 import android.support.annotation.NonNull;
 5 import android.support.annotation.Nullable;
 6 import android.support.v7.widget.LinearLayoutManager;
 7 import android.support.v7.widget.RecyclerView;
 8 import android.view.View;
 9 
10 import com.diabin.latte.ec.R;
11 import com.diabin.latte.ec.R2;
12 import com.flj.latte.delegates.LatteDelegate;
13 import com.flj.latte.ec.main.personal.list.ListAdapter;
14 import com.flj.latte.ec.main.personal.list.ListBean;
15 import com.flj.latte.ec.main.personal.list.ListItemType;
16 import com.flj.latte.ec.main.personal.settings.NameDelegate;
17 
18 import java.util.ArrayList;
19 import java.util.List;
20 
21 import butterknife.BindView;
22 
23 
24 public class UserProfileDelegate extends LatteDelegate {
25 
26     @BindView(R2.id.rv_user_profile)
27     RecyclerView mRecyclerView = null;
28 
29     @Override
30     public Object setLayout() {
31         return R.layout.delegate_user_profile;
32     }
33     //尽量都使用动态的方式,不要在xml中写死;
34     @Override  
35     public void onBindView(@Nullable Bundle savedInstanceState, @NonNull View rootView) {
36         final ListBean image = new ListBean.Builder()
37                 .setItemType(ListItemType.ITEM_AVATAR)
38                 .setId(1)
39                 .setImageUrl("http://i9.qhimg.com/t017d891ca365ef60b5.jpg")
40                 .build();
41 
42         final ListBean name = new ListBean.Builder()
43                 .setItemType(ListItemType.ITEM_NORMAL)
44                 .setId(2)
45                 .setText("姓名")
46                 .setDelegate(new NameDelegate())
47                 .setValue("未设置姓名")
48                 .build();
49 
50         final ListBean gender = new ListBean.Builder()
51                 .setItemType(ListItemType.ITEM_NORMAL)
52                 .setId(3)
53                 .setText("性别")
54                 .setValue("未设置性别")
55                 .build();
56 
57         final ListBean birth = new ListBean.Builder()
58                 .setItemType(ListItemType.ITEM_NORMAL)
59                 .setId(4)
60                 .setText("生日")
61                 .setValue("未设置生日")
62                 .build();
63 
64         final List<ListBean> data = new ArrayList<>();
65         data.add(image);
66         data.add(name);
67         data.add(gender);
68         data.add(birth);
69     }
70 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 5.3 图片库中图片选择事件的处理

【请求码的书写】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【调用类的书写】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【动态权限的处理】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【增加权限】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【调用】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 5.4 相机拍照之后的剪裁

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【配置清单】官方提供的;

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【增加回调图片进行剪裁之后并保存】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

6.图片上传和更新逻辑实现

【最后得到的图像的处理】上传到服务器并且可以设置本地的头像;

【设置本地的头像】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【效果】本地的头像已经发生了改变;

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【上传至服务器】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【剪裁之后进行了服务器的数据上传】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【说明】对于姓名和性别也是一样的道理;此处没有实现

 7.收货地址管理功能实现

【说明】收货地址使用的是recyclerView;

7.1【收货地址数据的转化】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

7.2【数据适配器的完成】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【item布局】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"  //此处使用的cardView
 3     xmlns:card_view="http://schemas.android.com/apk/res-auto"
 4     android:layout_width="match_parent"
 5     android:layout_height="140dp"
 6     android:layout_gravity="center"
 7     card_view:cardBackgroundColor="@android:color/white"
 8     card_view:cardCornerRadius="6dp"
 9     card_view:cardElevation="3dp"
10     card_view:cardUseCompatPadding="true">
11 
12     <android.support.v7.widget.LinearLayoutCompat
13         android:layout_width="match_parent"
14         android:layout_height="match_parent"
15         android:orientation="vertical">
16 
17         <RelativeLayout
18             android:layout_width="match_parent"
19             android:layout_height="0dp"
20             android:layout_weight="1"
21             android:orientation="horizontal">
22 
23             <android.support.v7.widget.AppCompatTextView
24                 android:id="@+id/tv_address_name"
25                 android:layout_width="wrap_content"
26                 android:layout_height="wrap_content"
27                 android:layout_alignParentLeft="true"
28                 android:layout_centerVertical="true"
29                 android:layout_marginLeft="20dp"
30                 android:text="姓名"
31                 android:textColor="@color/app_main" />
32 
33             <android.support.v7.widget.AppCompatTextView
34                 android:id="@+id/tv_address_phone"
35                 android:layout_width="wrap_content"
36                 android:layout_height="wrap_content"
37                 android:layout_centerInParent="true"
38                 android:text="电话"
39                 android:textColor="@color/we_chat_black" />
40 
41             <android.support.v7.widget.AppCompatTextView
42                 android:id="@+id/tv_address_delete"
43                 android:layout_width="wrap_content"
44                 android:layout_height="wrap_content"
45                 android:layout_alignParentRight="true"
46                 android:layout_centerVertical="true"
47                 android:layout_marginRight="20dp"
48                 android:text="删除"
49                 android:textColor="@android:color/darker_gray" />
50 
51         </RelativeLayout>
52 
53         <View
54             android:layout_width="match_parent"
55             android:layout_height="1dp"
56             android:layout_marginLeft="10dp"
57             android:layout_marginRight="10dp"
58             android:background="@color/app_background" />
59 
60         <RelativeLayout
61             android:layout_width="match_parent"
62             android:layout_height="0dp"
63             android:layout_weight="2">
64 
65             <android.support.v7.widget.AppCompatTextView
66                 android:id="@+id/tv_address_address"
67                 android:layout_width="wrap_content"
68                 android:layout_height="wrap_content"
69                 android:layout_alignParentLeft="true"
70                 android:layout_centerVertical="true"
71                 android:layout_marginLeft="20dp"
72                 android:gravity="center_vertical|left"
73                 android:textColor="@color/we_chat_black"
74                 android:textSize="18sp" />
75 
76         </RelativeLayout>
77     </android.support.v7.widget.LinearLayoutCompat>
78 </android.support.v7.widget.CardView>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【完善】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 package com.flj.latte.ec.main.personal.address;
 2 
 3 import android.support.v7.widget.AppCompatTextView;
 4 import android.view.View;
 5 
 6 import com.diabin.latte.ec.R;
 7 import com.flj.latte.net.RestClient;
 8 import com.flj.latte.net.callback.ISuccess;
 9 import com.flj.latte.ui.recycler.MultipleFields;
10 import com.flj.latte.ui.recycler.MultipleItemEntity;
11 import com.flj.latte.ui.recycler.MultipleRecyclerAdapter;
12 import com.flj.latte.ui.recycler.MultipleViewHolder;
13 
14 import java.util.List;
15 
16 
17 public class AddressAdapter extends MultipleRecyclerAdapter {
18 
19     protected AddressAdapter(List<MultipleItemEntity> data) {
20         super(data);
21         addItemType(AddressItemType.ITEM_ADDRESS, R.layout.item_address);
22     }
23 
24     @Override
25     protected void convert(final MultipleViewHolder holder, MultipleItemEntity entity) {
26         super.convert(holder, entity);
27         switch (holder.getItemViewType()) {
28             case AddressItemType.ITEM_ADDRESS:
29                 final String name = entity.getField(MultipleFields.NAME);
30                 final String phone = entity.getField(AddressItemFields.PHONE);
31                 final String address = entity.getField(AddressItemFields.ADDRESS);
32                 final boolean isDefault = entity.getField(MultipleFields.TAG);
33                 final int id = entity.getField(MultipleFields.ID);
34 
35                 final AppCompatTextView nameText = holder.getView(R.id.tv_address_name);
36                 final AppCompatTextView phoneText = holder.getView(R.id.tv_address_phone);
37                 final AppCompatTextView addressText = holder.getView(R.id.tv_address_address);
38                 final AppCompatTextView deleteTextView = holder.getView(R.id.tv_address_delete);
39                 deleteTextView.setOnClickListener(new View.OnClickListener() {
40                     @Override
41                     public void onClick(View v) {
42                         RestClient.builder()
43                                 .url("address.php")
44                                 .params("id", id)
45                                 .success(new ISuccess() {
46                                     @Override
47                                     public void onSuccess(String response) {
48                                         remove(holder.getLayoutPosition());
49                                     }
50                                 })
51                                 .build()
52                                 .post();
53                     }
54                 });
55 
56                 nameText.setText(name);
57                 phoneText.setText(phone);
58                 addressText.setText(address);
59                 break;
60             default:
61                 break;
62         }
63     }
64 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 

7.3 收货地址delegate创建

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【布局】

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical">
 6 
 7     <android.support.v7.widget.Toolbar
 8         android:layout_width="match_parent"
 9         android:layout_height="?attr/actionBarSize"
10         android:background="@android:color/holo_orange_dark">
11 
12         <RelativeLayout
13             android:layout_width="match_parent"
14             android:layout_height="match_parent">
15 
16             <android.support.v7.widget.AppCompatTextView
17                 android:layout_width="match_parent"
18                 android:layout_height="match_parent"
19                 android:layout_centerInParent="true"
20                 android:gravity="center"
21                 android:text="地址管理"
22                 android:textColor="@android:color/white"
23                 android:textSize="20sp" />
24 
25             <com.joanzapata.iconify.widget.IconTextView
26                 android:id="@+id/icon_address_add"
27                 android:layout_width="wrap_content"
28                 android:layout_height="match_parent"
29                 android:layout_alignParentRight="true"
30                 android:layout_marginRight="20dp"
31                 android:gravity="center"
32                 android:text="{fa-plus-square-o}"
33                 android:textColor="@android:color/white"
34                 android:textSize="30sp" />
35 
36         </RelativeLayout>
37 
38     </android.support.v7.widget.Toolbar>
39 
40     <android.support.v7.widget.RecyclerView
41         android:id="@+id/rv_address"
42         android:layout_width="match_parent"
43         android:layout_height="match_parent" />
44 
45 </LinearLayout>
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 package com.flj.latte.ec.main.personal.address;
 2 import android.os.Bundle;
 3 import android.support.annotation.NonNull;
 4 import android.support.annotation.Nullable;
 5 import android.support.v7.widget.LinearLayoutManager;
 6 import android.support.v7.widget.RecyclerView;
 7 import android.view.View;
 8 import com.diabin.latte.ec.R;
 9 import com.diabin.latte.ec.R2;
10 import com.flj.latte.delegates.LatteDelegate;
11 import com.flj.latte.net.RestClient;
12 import com.flj.latte.net.callback.ISuccess;
13 import com.flj.latte.ui.recycler.MultipleItemEntity;
14 import com.flj.latte.util.log.LatteLogger;
15 import java.util.List;
16 import butterknife.BindView;
17 
18 
19 public class AddressDelegate extends LatteDelegate implements ISuccess {
20 
21     @BindView(R2.id.rv_address)
22     RecyclerView mRecyclerView = null;
23 
24     @Override
25     public Object setLayout() {
26         return R.layout.delegate_address;
27     }
28 
29     @Override
30     public void onBindView(@Nullable Bundle savedInstanceState, @NonNull View rootView) {
31         RestClient.builder()
32                 .url("address.php")
33                 .loader(getContext())
34                 .success(this)
35                 .build()
36                 .get();
37     }
38 
39     @Override
40     public void onSuccess(String response) {
41         LatteLogger.d("AddressDelegate", response);
42         final LinearLayoutManager manager = new LinearLayoutManager(getContext());
43         mRecyclerView.setLayoutManager(manager);
44         final List<MultipleItemEntity> data =
45                 new AddressDataConverter().setJsonData(response).convert();
46         final AddressAdapter addressAdapter = new AddressAdapter(data);
47         mRecyclerView.setAdapter(addressAdapter);
48     }
49 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 7.4 点击事件的进入

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
 1 package com.flj.latte.ec.main.personal;
 2 
 3 import android.view.View;
 4 import com.chad.library.adapter.base.BaseQuickAdapter;
 5 import com.chad.library.adapter.base.listener.SimpleClickListener;
 6 import com.flj.latte.delegates.LatteDelegate;
 7 import com.flj.latte.ec.main.personal.list.ListBean;
 8 
 9 public class PersonalClickListener extends SimpleClickListener {
10 
11     private final LatteDelegate DELEGATE;
12 
13     public PersonalClickListener(LatteDelegate delegate) {
14         this.DELEGATE = delegate;
15     }
16 
17     @Override
18     public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
19         final ListBean bean = (ListBean) baseQuickAdapter.getData().get(position);
20         int id = bean.getId();
21         switch (id) {
22             case 1:
23                 DELEGATE.getParentDelegate().getSupportDelegate().start(bean.getDelegate());
24                 break;
25             case 2:
26                 DELEGATE.getParentDelegate().getSupportDelegate().start(bean.getDelegate());
27                 break;
28             default:
29                 break;
30         }
31     }
32 
33     @Override
34     public void onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
35 
36     }
37 
38     @Override
39     public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
40 
41     }
42 
43     @Override
44     public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
45 
46     }
47 }
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 7.5 删除键功能实现

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 8.基于极光推送的消息推送

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装

 

好文要顶
关注我
收藏该文
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
0
0

« 上一篇: 【0111】【项目实战】-【Android通用框架设计与完整电商APP开发】-【11】购物车,订单,支付功能开发(包含支付宝支付和微信支付)

» 下一篇: 【0113】【项目实战】-【Android通用框架设计与完整电商APP开发】-【13】评价晒单功能实现(自定义评分控件和仿微信自动多图选择控件)

posted @
2018-04-11 11:05
OzTaking
阅读(649)
评论(0)
编辑
收藏
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章资源,如无特殊说明或标注,均为本站网友和创作者贡献分享。如若本站内容侵犯了原著者的合法权益,可联系网站客服QQ2743319061删除。

云炬星球 安卓教程 【0112】【项目实战】-【Android通用框架设计与完整电商APP开发】-【12】 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装 https://src.yunjunet.cn/103928.html

常见问题
  • 放心亲,我们不会为了几十块钱的东西坏了名声!
查看详情
  • 方法一:点击“立即下载.”按钮,付款后在下载弹窗的虚线框的隐藏信息里获取 方法二:在正文底部使用VIP查看隐藏的解压密码 方法三:联系【云炬网络】公众号客服获取
查看详情
  • 付款后会出现“立即下载”按钮(点击即可下载),如果下载失败也可以联系客服发订单截图补发。
查看详情
  • 登录购买会多端同步购买记录,永久可以查看反复下载;非登录购买仅将购买记录保存到本地浏览器中,浏览器cookie清除后无法再次下载。先右上角点登录,然后点击微信图标可以快速授权注册登录^_^
查看详情
  • 可以试看。点击”查看演示“或“试看预览”按钮可以试读从资料目录中节选的部分内容,也可以自己指定想试看的内容。
查看详情
  • 原因一:本站所有资源已开启有效性检测(服务器24h全自动监测),当监测到下载链接无法访问时会提示“该资源已失效,请勿购买”,遇到这种情况可以联系客服修复失效的下载链接,或直接联系客服在淘宝下单购买即可。(检测原理:购买前服务器程序会预访问下载链接,响应值为200说明资源有效允许购买,响应值为404或502等报错说明资源失效禁止购买)。原因二:上传者未启用“下载”选项。
查看详情
官方客服团队

为您解决烦忧 - 24小时在线 专业服务