1 BaseModule-View基类
public abstract class BaseModule<T>{
private Context mCtx;
public View view;
public BaseModule(Context ctx){
this.mCtx = ctx;
view = initView();
}
//因为在父类中不知道详情4个拆分出来模块的具体布局效果
public abstract View initView();
//因为在父类中不知道详情4个拆分出来模块的具体数据也不知道控件有哪些,所以提供一个给控件填充数据方法
public abstract void bindData(T t);
}
2 子view
public class AppInfoModule extends BaseModule<HomeInfo.AppInfo> {
@BindView(R.id.tv_name)
TextView tvName;
public AppInfoModule(Context ctx) {
super(ctx);
}
@Override
public View initView() {
View view = UIUitls.inflate(R.layout.layout_app_info);
ButterKnife.bind(this,view);
return view;
}
@Override
public void bindData(HomeInfo.AppInfo appInfo) {
tvName.setText(appInfo.getName());
}
}
3 将View添加至帧布局中。
public class DetailActivity extends AppCompatActivity {
@BindView(R.id.fl_app_info)
FrameLayout flAppInfo;
@BindView(R.id.fl_app_safe)
FrameLayout flAppSafe;
private View onSubCreateSuccessedView() {
View view = UIUitls.inflate(R.layout.activity_detail);
ButterKnife.bind(this,view);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
//将顶部应用基本信息添加至帧布局中
AppInfoModule appInfoModule = new AppInfoModule(UIUitls.getContext());
appInfoModule.bindData(detailAppInfo);
flAppInfo.addView(appInfoModule.view);
//安全相关
AppSafeModule appSafeModule = new AppSafeModule(UIUitls.getContext());
appSafeModule.bindData(detailAppInfo);
flAppSafe.addView(appSafeModule.view);
...
return view;
}
}