这是我参与「第四届青训营 」笔记创作活动的第4天
前言:
这是第三篇开发日志,因为刚刚从MVP架构转学MVVM架构,所以记录一下使用安卓的Databingding时踩过的坑
正文
1.包的命名问题
在使用Databinding时,会经常与ViewModel进行数据的获取,但是在初学的时候包括组员在写代码时都会出现在编译时报错的问题,而且无法从报出来的错误得知到底是那里出了问题,(主要特征是跳转到系统自动生成的类中,包名变红)在结果查找资料和详细分析后发现其实是包的命名问题,当ViewModel所在的包出现大写字母开头时就会报错,只要把包的开头改成小写即可。
2.图片加载问题
使用DataBinding+ViewModel+LiveData进行图片显示时,需要对显示方法进行加工,不然会出现设置了src资源但是会显示一个色块的问题。具体解决方法是新建一个Adapter类,通过@BindingAdapter("xxx")来对相应资源加载方式进行加工,因为组员在显示置顶图标时会显示色块,所以我对android:src进行了加工,详细代码如下:
@BindingAdapter("android:src")
public static void setSrc(ImageView view, int resId) {
view.setImageResource(resId);
}
除了本地资源的加载,项目还需要对网络图片进行加载,要实现在databinging中加载网络图片也是需要使用@BingingAdapter注解来实现,这里我通过Glide图片加载框架来实现网络图片的加载(主要是头像的加载)
@BindingAdapter({"imageUrl"})
public static void loadImage(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(url)
.into(imageView);
}
3.Model的创建
因为Retrofit和Gson连用实在是太方便了,所以我对model的编写会根据返回值来编写,即Gson能识别的模式,不过返回数据太多时会花费很多时间在model的编写上,这是我找到了一个很好用的插件,在这里顺便记录一下,虽然时很久以前就在用的,不过这次找了个中文汉化增强版的,适合英文新手使用,插件名—— GsonFormat-Plus,没有卖广告,因为很多人都不知道又这么方便的插件,而且我也经常忘记名字,所以在记笔记时刚好记得就顺便记录一下,之后忘了找起来也方便
心得
这篇可以说是开发时的一些碎碎念,主要是记录一些问题,方便以后遇到问题的时候来找解决方法