最近,我启动了一个android项目,其中用Java类填充视图。我有一个容器ViewGroup对象,其中包含页眉,正文和页脚对象。基本上,我的看法如下所示。
Layout - This is how my view looks like
现在继续,我让每个组件处理它们自己的事件,然后如果需要更新任何其他组件,则通过根视图进行传播。在此示例中,我在标题上有一个计数器,如果单击任何正文列,该计数器都会增加。默认情况下,创建时列的颜色会根据其位置设置为蓝色或红色。如果单击列,它会更改颜色,从而更容易解决主要问题。
所需的情况是,当我单击左列(蓝色)时,列颜色将变为黄色(示例),然后标题计数器将增加为1。然后应重新创建单击的列再次经历构造函数以变成蓝色。
会发生什么,当单击蓝色列时,它的颜色变为黄色,并且标题计数器增加,但是该列仍然保持黄色。
我要做的是在单击列后重置或重新创建。到目前为止,我尝试了几件事,并搜索了类似的问题,但是找不到合适的答案。
面板类
public Class Panel extends ViewGroup{
public Panel(Context context, Direction direction){
// direction enum has default colors, BLUE and RED
this.setBackgroundColor(this.direction.getColor());
// basically like this
setOnClick({
changeColor();
Body body = (Body) Panel.super.getParent();
Container container = (Container) body.getParent();
container.increment();
})
}
...
}
` 身体类别
public Class Body extends ViewGroup {
private Panel col1;
private Panel col2;
public Body(Context context){
...
col1 = new Panel(context, LEFT);
col2 = new Panel(context, RIGHT);
addView(..);
}
...
}
` 容器类
public Class Container extends ViewGroup {
private Header header;
private Body body;
private Footer footer;
public Body(Context context){
...
body = new Body(context);
...
addView(...);
}
public void increment(){
header.increment();
this.body = new Body(this.getContext());
}
...
}
` 这就是我尝试重新创建正文和嵌套列(面板)的方式
Container.body = new Body(this.getContext());
简而言之; 我希望使用默认参数(通过构造函数)重新创建子组件,而其他组件应保持不变。希望这个问题也能帮助其他人。谢谢。
PS。如果有任何混淆,我可以添加更多的伪代码和图表来阐明。