我正在尝试为具有android视图组和注释的Web开发人员实现一些非常常见的东西
我们的想法是让基本的ViewGroup
具有自己的布局基础。像标题,内容和页脚
所有其他视图组具有相同的布局,但块内的不同内容必须扩展此基础ViewGroup
例如我的BaseViewGroup
@EViewGroup(R.layout.base_view_group)
public abstract class BaseViewGroup extends RelativeLayout {
private final LayoutInflater mLayoutInflater;
@ViewById
public RelativeLayout rlHeader;
@ViewById
public RelativeLayout rlFooter;
@ViewById
public RelativeLayout rlScrollMain;
// Template methods for inflating dialog
public abstract int getHeaderViewId();
public abstract int getFooterViewId();
public abstract int getScrollMainViewId();
public CDialogBase(DialogChain dialogChain, Context context) {
super(context);
mLayoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@AfterViews
void afterViews() {
rlHeader.addView(mLayoutInflater.inflate(getHeaderViewId(), rlHeader, false));
rlScrollMain.addView(mLayoutInflater.inflate(getScrollMainViewId(), rlHeader, false));
rlFooter.addView(mLayoutInflater.inflate(getFooterViewId(), rlFooter, false));
}
}
当我们需要concreate类时,我们必须扩展并实现模板方法。
// @EViewGroup 公共类ConcreteViewGroup扩展了BaseViewGroup {
@ViewById
TextView textView;
@ViewById
Button button;
@Override
public int getHeaderViewId() {
return R.layout.concrete_header;
}
@Override
public int getFooterViewId() {
return R.layout.concrete_footer;
}
@Override
public int getScrollMainViewId() {
return R.layout.concrete_main;
}
@AfterViews
@Click
@Click
......
}
所以我需要扩展基础ViewGroup并在模板方法中提供concreate资源。而且在继承的具体类中也使用注释来查找视图和其他内容 我有一个错误,因为我的继承类没有注释,但如果注释它,它会崩溃因为我必须在注释中提供布局。
是否有可能像我上面描述的那样? 提前谢谢大家。
答案 0 :(得分:0)
您还必须在子类中指定布局:@EViewGroup(R.layout.base_view_group)
。