mvvm大表单维护手册
一、配置
android{dataBinding {
enabled =true
}}
二、文件
还有string里的就不需要了三、activity调用
//加载公共根布局
setContentView(R.layout.activity_com_static_tab_scroll);
//建立表单的容器
ViewGroup rightView = (ViewGroup) getWindow().getDecorView().findViewById(R.id.com_static_tab_right_ll);
//添加一些静态的ui组件
leftView.addView(getLarge_ClassTextView(R.layout.view_large_class_textview,"登记信息"));
//绑定mvvm界面
dataBind1 = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.view_14_reg_essential_infor, leftView,true);
//旧代码会用到黄油刀
ButterKnife.bind(this, getWindow().getDecorView());
//查看页面所有按钮无效,就改这个常量就行了。
setMvvmViewDisable(isHistory);
xml:
android:enabled="@{DataEvent.int1Enable==0?true:false}"
//开启字段非空验证
onClickListeners.openVerifty();//启用必填项验证
//初始化实体,并注册流程变量,个点击事件
initDataBean();
dataBind1.setVariable(BR.BaseinfoEntity,base.getBaseinfo());
postDataBind0.setVariable(BR.DataEvent,onClickListeners);
四、mvvm方法
1.数据字典功能
onClickListeners=new DataEvent(getContext());//上下文不得为空
public class DataEventextends MvvmEvent {
public DataEvent(Context mContext) {
super(mContext);
}
//重写自己需要的非公共接口
@Override
public void onDict(final View view, String tabname) {
try {
//数据字典功能,将这个类作为内部类拖进去就可以了,三级缓存、数据库,树形图,缺少文件按报红补全。
//注意,如果遇到未处理token=-2失效代码参照绿色通道。不然线程不会终止
new CommonSpinner(tabname, (TextView) view,true) {
@Override
void returnCode(String code) {
//dealcode,将指set到view就好了。
dealCode(view, code);
//这里可能需要刷新
postDataBind0.invalidateAll();
}
};
}catch (Exception e) {
e.printStackTrace();
}
}
}
xml:
android:drawableRight="@{FeedBackEntity.clewcheck.equals(@string/default_null) ||FeedBackEntity.clewcheck==null? @drawable/arrow_red : @drawable/arror_gray}"
android:onClick="@{(v)->DataEvent.onDict(v,@string/dh076)}"
app:dict="@{FeedBackEntity.clewcheck}"
app:tabName="@{@string/dh076}"
2.非空校验。
//注意onClickListeners.openVerifty();//启用必填项验证
return onClickListeners.isAllRight();
xml:
app:verifyMap="@{DataEvent.VerifyViewMap}"
app:toastString="@{@string/str_sfsza}"//吐司文字
//注意根布局被联动子布局不会修改visable
app:verifyTagId="@{@string/id_layout_isPor}"//标记id 被标记view这visable变=可见验证有效,
//注意:表单外框使用这个TelescopicLinearLayout自定义控件,根布局必需第一个tv。第二个linear
//注意:如果是edit需要在databean里面手动刷新。
//注意:二级联动需要使用string的方法例如startswith 并且不能传"string"
android:visibility="@{FeedBackEntity.clewcheck.startsWith(@string/str_1)?View.VISIBLE:View.GONE}"
四、如果你们要新建页面
基本配置
xmlns:android="http://schemas.android.com/apk/res/android">
name="FeedBackEntity"
type="com.bean.FeedBackEntity"/>
type="com.bean.MediaTEEntity"/>