21
21
22
22
public class StatusLayoutManager {
23
23
24
+ /**
25
+ * 三种默认布局 ID
26
+ */
27
+ private static final int DEFAULT_LOADING_LAYOUT_ID = R .layout .layout_status_layout_manager_loading ;
28
+ private static final int DEFAULT_EMPTY_LAYOUT_ID = R .layout .layout_status_layout_manager_empty ;
29
+ private static final int DEFAULT_ERROR_LAYOUT_ID = R .layout .layout_status_layout_manager_error ;
30
+
31
+ /**
32
+ * 默认布局中可点击的 view ID
33
+ */
34
+ private static final int DEFAULT_EMPTY_CLICKED_ID = R .id .bt_status_empty_click ;
35
+ private static final int DEFAULT_ERROR_CLICKED_ID = R .id .bt_status_error_click ;
36
+
37
+ /**
38
+ * 默认颜色
39
+ */
40
+ private static final int DEFAULT_CLICKED_TEXT_COLOR = R .color .status_layout_click_view_text_color ;
41
+ private static final int DEFAULT_BACKGROUND_COLOR = R .color .status_layout_background_color ;
42
+
24
43
private View contentLayout ;
25
44
26
45
@ LayoutRes
@@ -120,7 +139,8 @@ public void showSuccessLayout() {
120
139
private void createLoadingLayout () {
121
140
if (loadingLayout == null ) {
122
141
loadingLayout = inflate (loadingLayoutID );
123
- } else {
142
+ }
143
+ if (loadingLayoutID == DEFAULT_LOADING_LAYOUT_ID ) {
124
144
loadingLayout .setBackgroundColor (defaultBackgroundColor );
125
145
}
126
146
if (!TextUtils .isEmpty (loadingText )) {
@@ -159,27 +179,23 @@ public void showLoadingLayout() {
159
179
private void createEmptyLayout () {
160
180
if (emptyLayout == null ) {
161
181
emptyLayout = inflate (emptyLayoutID );
162
- } else {
163
- emptyLayout .setBackgroundColor (defaultBackgroundColor );
164
182
}
165
-
166
- if (onStatusChildClickListener == null ) {
167
- return ;
183
+ if (emptyLayoutID == DEFAULT_EMPTY_LAYOUT_ID ) {
184
+ emptyLayout .setBackgroundColor (defaultBackgroundColor );
168
185
}
169
186
187
+ // 点击事件回调
170
188
View view = emptyLayout .findViewById (emptyClickViewId );
171
- if (view == null ) {
172
- return ;
189
+ if (view != null && onStatusChildClickListener != null ) {
190
+ // 设置点击按钮点击时事件回调
191
+ view .setOnClickListener (new View .OnClickListener () {
192
+ @ Override
193
+ public void onClick (View view ) {
194
+ onStatusChildClickListener .onEmptyChildClick (view );
195
+ }
196
+ });
173
197
}
174
198
175
- // 设置点击按钮点击时事件回调
176
- view .setOnClickListener (new View .OnClickListener () {
177
- @ Override
178
- public void onClick (View view ) {
179
- onStatusChildClickListener .onEmptyChildClick (view );
180
- }
181
- });
182
-
183
199
// 设置默认空数据布局的提示文本
184
200
if (!TextUtils .isEmpty (emptyText )) {
185
201
TextView emptyTextView = emptyLayout .findViewById (R .id .tv_status_empty_content );
@@ -196,19 +212,18 @@ public void onClick(View view) {
196
212
}
197
213
}
198
214
199
- TextView emptyClickViewTextView = emptyLayout .findViewById (R .id .bt_status_empty_click );
200
- if (emptyClickViewTextView == null ) {
201
- return ;
202
- }
203
- // 设置点击按钮的文本和可见性
204
- if (isEmptyClickViewVisible ) {
205
- emptyClickViewTextView .setVisibility (View .VISIBLE );
206
- if (!TextUtils .isEmpty (emptyClickViewText )) {
207
- emptyClickViewTextView .setText (emptyClickViewText );
215
+ TextView emptyClickViewTextView = emptyLayout .findViewById (DEFAULT_EMPTY_CLICKED_ID );
216
+ if (emptyClickViewTextView != null ) {
217
+ // 设置点击按钮的文本和可见性
218
+ if (isEmptyClickViewVisible ) {
219
+ emptyClickViewTextView .setVisibility (View .VISIBLE );
220
+ if (!TextUtils .isEmpty (emptyClickViewText )) {
221
+ emptyClickViewTextView .setText (emptyClickViewText );
222
+ }
223
+ emptyClickViewTextView .setTextColor (emptyClickViewTextColor );
224
+ } else {
225
+ emptyClickViewTextView .setVisibility (View .GONE );
208
226
}
209
- emptyClickViewTextView .setTextColor (emptyClickViewTextColor );
210
- } else {
211
- emptyClickViewTextView .setVisibility (View .GONE );
212
227
}
213
228
}
214
229
@@ -240,27 +255,22 @@ public void showEmptyLayout() {
240
255
private void createErrorLayout () {
241
256
if (errorLayout == null ) {
242
257
errorLayout = inflate (errorLayoutID );
243
- } else {
244
- errorLayout .setBackgroundColor (defaultBackgroundColor );
245
258
}
246
-
247
- if (onStatusChildClickListener == null ) {
248
- return ;
259
+ if (errorLayoutID == DEFAULT_ERROR_LAYOUT_ID ) {
260
+ errorLayout .setBackgroundColor (defaultBackgroundColor );
249
261
}
250
262
251
263
View view = errorLayout .findViewById (errorClickViewId );
252
- if (view == null ) {
253
- return ;
264
+ if (view != null && onStatusChildClickListener != null ) {
265
+ // 设置点击按钮点击时事件回调
266
+ view .setOnClickListener (new View .OnClickListener () {
267
+ @ Override
268
+ public void onClick (View view ) {
269
+ onStatusChildClickListener .onErrorChildClick (view );
270
+ }
271
+ });
254
272
}
255
273
256
- // 设置点击按钮点击时事件回调
257
- view .setOnClickListener (new View .OnClickListener () {
258
- @ Override
259
- public void onClick (View view ) {
260
- onStatusChildClickListener .onErrorChildClick (view );
261
- }
262
- });
263
-
264
274
// 设置默认出错布局的提示文本
265
275
if (!TextUtils .isEmpty (errorText )) {
266
276
TextView errorTextView = errorLayout .findViewById (R .id .tv_status_error_content );
@@ -277,19 +287,18 @@ public void onClick(View view) {
277
287
}
278
288
}
279
289
280
- TextView errorClickViewTextView = errorLayout .findViewById (R .id .bt_status_error_click );
281
- if (errorClickViewTextView == null ) {
282
- return ;
283
- }
284
- // 设置点击按钮的文本和可见性
285
- if (isErrorClickViewVisible ) {
286
- errorClickViewTextView .setVisibility (View .VISIBLE );
287
- if (!TextUtils .isEmpty (errorClickViewText )) {
288
- errorClickViewTextView .setText (errorClickViewText );
290
+ TextView errorClickViewTextView = errorLayout .findViewById (DEFAULT_ERROR_CLICKED_ID );
291
+ if (errorClickViewTextView != null ) {
292
+ // 设置点击按钮的文本和可见性
293
+ if (isErrorClickViewVisible ) {
294
+ errorClickViewTextView .setVisibility (View .VISIBLE );
295
+ if (!TextUtils .isEmpty (errorClickViewText )) {
296
+ errorClickViewTextView .setText (errorClickViewText );
297
+ }
298
+ errorClickViewTextView .setTextColor (errorClickViewTextColor );
299
+ } else {
300
+ errorClickViewTextView .setVisibility (View .GONE );
289
301
}
290
- errorClickViewTextView .setTextColor (errorClickViewTextColor );
291
- } else {
292
- errorClickViewTextView .setVisibility (View .GONE );
293
302
}
294
303
}
295
304
@@ -421,19 +430,19 @@ public static final class Builder {
421
430
public Builder (@ NonNull View contentLayout ) {
422
431
this .contentLayout = contentLayout ;
423
432
// 设置默认布局
424
- this .loadingLayoutID = R . layout . layout_status_layout_manager_loading ;
425
- this .emptyLayoutID = R . layout . layout_status_layout_manager_empty ;
426
- this .errorLayoutID = R . layout . layout_status_layout_manager_error ;
433
+ this .loadingLayoutID = DEFAULT_LOADING_LAYOUT_ID ;
434
+ this .emptyLayoutID = DEFAULT_EMPTY_LAYOUT_ID ;
435
+ this .errorLayoutID = DEFAULT_ERROR_LAYOUT_ID ;
427
436
// 设置默认点击点击view id
428
- this .emptyClickViewId = R . id . bt_status_empty_click ;
429
- this .errorClickViewId = R . id . bt_status_error_click ;
437
+ this .emptyClickViewId = DEFAULT_EMPTY_CLICKED_ID ;
438
+ this .errorClickViewId = DEFAULT_ERROR_CLICKED_ID ;
430
439
// 设置默认点击按钮属性
431
440
this .isEmptyClickViewVisible = true ;
432
- this .emptyClickViewTextColor = contentLayout .getContext ().getResources ().getColor (R . color . status_layout_click_view_text_color );
441
+ this .emptyClickViewTextColor = contentLayout .getContext ().getResources ().getColor (DEFAULT_CLICKED_TEXT_COLOR );
433
442
this .isErrorClickViewVisible = true ;
434
- this .errorClickViewTextColor = contentLayout .getContext ().getResources ().getColor (R . color . status_layout_click_view_text_color );
443
+ this .errorClickViewTextColor = contentLayout .getContext ().getResources ().getColor (DEFAULT_CLICKED_TEXT_COLOR );
435
444
// 设置默认背景色
436
- this .defaultBackgroundColor = contentLayout .getContext ().getResources ().getColor (R . color . status_layout_background_color );
445
+ this .defaultBackgroundColor = contentLayout .getContext ().getResources ().getColor (DEFAULT_BACKGROUND_COLOR );
437
446
}
438
447
439
448
///////////////////////////////////////////
0 commit comments