重构 Airport 模块
来源:互联网 发布:ubuntu iptables 重启 编辑:程序博客网 时间:2024/05/17 22:24
当一个项目开始时,它总是很简洁,很优雅,就像:
val a = 1随着项目越来越复杂,糟糕的代码不断加入,代码变得混乱难以维护。
CleanCode 中形容这叫沼泽。
重构可以让代码变得更好
@Route(path = RoutePath.AIRPORT)public class AirportAct extends BaseAct { @Override protected int layoutResId() { return R.layout.act_airport; } @Override protected void inject() { AppComponentProvider.provide().inject(this); } @Override protected void init(Bundle savedInstanceState) { clickCancel(); initEtSearch(); initIndexableLayout(); } // ======================== 取消 ======================== private void clickCancel() { RxView.clicks(findViewById(R.id.tvCancel)) .throttleFirst(2, TimeUnit.SECONDS) .subscribe(aVoid -> finish()); } // ======================== 按名称或拼音查询机场 ======================== @BindView(R.id.etSearch) EditText etSearch; @BindView(R.id.btnUpdate) LoginButton btnUpdate; @BindColor(R.color.md_grey_50) int grey50; @BindColor(R.color.md_grey_300) int grey300; @BindColor(R.color.md_grey_400) int grey400; @Inject AirportHelper airportHelper; private void initEtSearch() { // 背景 GradientDrawable etSearchBg = new GradientDrawable(); etSearchBg.setCornerRadius(ConvertUtils.dp2px(5)); etSearchBg.setStroke(1, grey300); etSearchBg.setColor(grey50); etSearch.setBackground(etSearchBg); etSearch.setHintTextColor(grey400); // 查询图标 Drawable search = new IconicsDrawable(this) .icon(Ionicons.Icon.ion_ios_search) .colorRes(R.color.colorPrimary) .sizeDp(17); etSearch.setCompoundDrawablePadding(ConvertUtils.dp2px(8)); etSearch.setCompoundDrawables(search, null, null, null); // 查询 RxTextView.afterTextChangeEvents(etSearch) .map(event -> event.editable().toString().trim()) .flatMap(query -> airportService.listByNameOrPinyin(query)) // indexableAdapter 有个 bug 不得不过滤下 .filter(airports -> airports.size() != 0) .observeOn(AndroidSchedulers.mainThread()) .subscribe(airports -> airportAdapter.setDatas(airports)); //更新机场列表 RxView.clicks(btnUpdate) .throttleFirst(1, TimeUnit.SECONDS) .subscribe(aVoid -> airportHelper.updateAirportByLastUpdateDate(new AirportHelper.UpdateListener() { @Override public void onUpdateSuccess(int size) { if (size > 0) { airportService.listUsed() .filter(airportList -> airportList.size() != 0) .subscribe(airportList -> airportAdapter.setDatas(airportList)); } } })); /*.map(aVoid -> airportHelper.updateAirportByLastUpdateDate()) .delay(1, TimeUnitDelete.SECONDS, AndroidSchedulers.mainThread()) .flatMap(aVoid -> airportService.listUsed()) .filter(airportList -> airportList.size() != 0) .subscribe(airportList -> airportAdapter.setDatas(airportList));*/ } // ======================== 机场索引列表 ======================== @BindView(R.id.indexableLayout) IndexableLayout indexableLayout; @Inject AirportService airportService; @Inject AirportAdapter airportAdapter; private void initIndexableLayout() { indexableLayout.setLayoutManager(new LinearLayoutManager(this)); indexableLayout.setCompareMode(IndexableLayout.MODE_ALL_LETTERS); setCenterOverlay(); indexableLayout.setAdapter(airportAdapter); addItemDecoration(); setOnItemContentClickListener(); // 加载列表 airportService.listUsed() // indexableAdapter 有个 bug 不得不过滤下 .filter(airports -> airports.size() != 0) .observeOn(AndroidSchedulers.mainThread()) .subscribe(airports -> airportAdapter.setDatas(airports)); } /** * setCenterOverlay. */ @BindColor(R.color.colorPrimary) int colorPrimary; private void setCenterOverlay() { indexableLayout.setOverlayStyle_Center(); indexableLayout.getmCenterOverlay().setBackgroundColor(Color.TRANSPARENT); indexableLayout.getmCenterOverlay().setTextColor(colorPrimary); indexableLayout.getmCenterOverlay().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 50); } /** * addItemDecoration. */ private void addItemDecoration() { Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStrokeWidth(1); paint.setColor(grey300); HorizontalDividerItemDecoration itemDecoration = new HorizontalDividerItemDecoration.Builder(this).paint(paint).build(); indexableLayout.getRecyclerView().addItemDecoration(itemDecoration); } /** * setOnItemContentClickListener. */ private void setOnItemContentClickListener() { airportAdapter.setOnItemContentClickListener((v, originalPosition, currentPosition, airport) -> { if (originalPosition >= 0) { RxBus.get().post(RxBusTag.AIRPORT_SELECTED, airport); finish(); } }); }}
阅读全文
0 0
- 重构 Airport 模块
- Airport
- 机房重构-封装模块
- 【重构】重构概要--六大重构模块
- [日志]homeCloud项目NET模块重构
- 支付模块重构整理与总结
- 多模块项目的POM重构
- 交易系统模块划分,模块拆分,重构实战
- JavaScript重构(一):模块划分和命名空间
- 【机房重构】--判空/清空方法(模块)
- JavaScript重构(一):模块划分和命名空间
- python实战游戏开发——重构:模块game_functions
- Codeforces---Airport
- B. Airport
- LA4725 Airport
- uva1450 - Airport
- Airport Express
- UVA1450-Airport
- 数据的逻辑结构
- 文件权限的操作
- AI/机器学习(热点及趋势?)
- C语言指针用法详解(二) 指针的算术运算
- Python2.7学习笔记(一)
- 重构 Airport 模块
- 四步准备Android面试
- POJ 3683 Priest John's Busiest Day 笔记
- git简明手册
- c++————学习记录
- tensorflow基本用法(一)
- java 基础小认识
- 阿里云服务器开启java SocketServer不能接收到客户端消息的问题
- C语言算法38-48