项目界面设计总结
好久不见
目录
- 聊聊天
- 过程
- 问题
- 解决方式
- 总结
聊聊天
上周的确很充实,今年开始上班的时候,就一直处于学习状态,老是抱怨公司这那的(因为一直学,没有事情可做,无用武之地是我年轻人不能忍受的),但是回想一下当初进来时候是多么的谦虚,这一品质不能丢。我们更不应该把问题的原因归结到别人身上,从自己出发才是最好的。也许你和别人去争,去比较,无论输赢,最终的得失还是自己。最近大家老是讨论离职,我个人是不推荐的,推荐篇文章给大家看看【血的教训】
过程
过程当然是愉快的,我们有我们的小队,更有我的小伙伴,我们多次讨论得到了项目框架的选型,这里也给大家列举出来
-
设计思想(因为项目的业务的不复杂性,没用到MVP或者MVVM)
MVC(但是包要分很细) -
热更新
Bugly(确实比较好用,我的博客有介绍,但我还是把官网地址给你推荐你们学一下Bugly使用官网,我博客的讲解肯定没有官网的详细) -
网络请求
okHttp3(自己写了个工具类,书还没看完,没用retrofit)
部分代码提出来给你们,主要的是代码的复用性
//单列模式的双重判断,推荐你们使用
public static OkhttpUtil getInstance() {
if (mOkhtttpUtils == null) {
synchronized (OkhttpUtil.class) {
if (mOkhtttpUtils == null) {
return mOkhtttpUtils = new OkhttpUtil();
}
}
}
return mOkhtttpUtils;
}
//以及Handler
//创建一个主线程的handler
mHandler = new Handler(Looper.getMainLooper());
//和在请求成功或者失败通过.post()对UI进行更改
mHandler.post()
其中包括一些基类的管理我就不讲解了
问题
当时有个listview全选的问题,但是网上给的都不太一样,网上的代码都是这样两个按钮用for循环去改变集合的属性在重绘listview,但是我的需求是一个按钮去实现
图一(网上效果)
图二(需求的效果)
解决
全选的点击代码如下
if (cbAll.isChecked()){
for (ScanInfo scanInfo:scanInfos){
scanInfo.setScanIsCb("1");
scanAdapter.notifyDataSetChanged();
}
}else {
for (ScanInfo scanInfo:scanInfos){
scanInfo.setScanIsCb("0");
scanAdapter.notifyDataSetChanged();
}
}
大家可能感觉和网上的没区别,的确,网上的代码两个按钮就是这几行代码去实现,那我只要有一个item没勾选你这个全选按钮是不是就不能钩中,我item都钩中了你全选的才能钩中。好的逻辑出来了,看看我们的代码
if (scanInfos.get(position).getScanIsCb().equals("1")){
scanInfos.get(position).setScanIsCb("0");
if (cbAll.isChecked()){
cbAll.setChecked(false);
}
}else{
int isck=0;
scanInfos.get(position).setScanIsCb("1");
for (ScanInfo scanInfo:scanInfos){
if (scanInfo.getScanIsCb().equals("0")){
isck++;
}
}
if (isck==0){
cbAll.setChecked(true);
}
}
总结
项目基本的界面和业务代码都实现了就查逻辑代码和接口调试了,做了这次项目感觉自己离目标越来越近了。移动架构师乃求其上,若得其中高级工程师,定当有辱光阴。
路长,若大王看之,可愿同行?
可能会要我滚。。。哈哈