当中间容器变化之后,标题栏也要跟着变化

设计个比对依据:

抽象类BaseView中定义抽象方法,每个继承的View都必须实现,为自己的界面定义一个唯一的int常量,作为比对依据

降低容器之间的耦合度:

中间容器干了其他容器的活,耦合度很高,中间容器应该只需要去“通知”其他容器就可以了

使用观察者模式为中间容器变动增加监听,解决如果有多个关联容器的问题

观察者模式:

被观察的对象======>中间容器

观察者============>标题容器

被观察的对象{
List<观察者> lists;
  boolean isChange=false;
    setChange(){
     isChange=true;
  }
  notify(){
    for(观察者 item:lists){
    item.update();
  }
  }
}

MainActivity.java

    /**
* 初始化主体
*/
public void initMiddle() {
mainContainer=(RelativeLayout) findViewById(R.id.il_main);
MiddleManager.getInstance().setMainContainer(mainContainer);
MiddleManager.getInstance().loadView(LoginView.class);
//添加观察者
MiddleManager.getInstance().addObserver(TitleManager.getInstance());
}

MiddleManager.java

    /**
* 修改标题
*/
public void changeTitle(){
setChanged();
notifyObservers(currentView.getID());
}

TitleManager.java

    /**
* 修改标题
*/
@Override
public void update(Observable observable, Object data) {
if(data!=null && StringUtils.isNumeric(data.toString())){
switch (Integer.parseInt(data.toString())) {
case ConstantValue.VIEW_INDEX:
showLoginTitle();
break;
case ConstantValue.VIEW_LOGIN:
showUnloginTitle();
break;
}
}
}

IndexView.java

    /**
* 返回id
*/
@Override
public int getID() {
return ConstantValue.VIEW_INDEX;
}

ConstantValue.java

package com.tsh.lottery;
/**
* 常量类
* @author taoshihan
*
*/
public class ConstantValue {
public final static int VIEW_INDEX=1;//首页界面id
public final static int VIEW_LOGIN=2;//登陆界面id
}

1.中间容器变成被观察的对象,继承Observable

2.标题容器变成观察者,实现Observer接口

3.建立观察者和被观察者之间的关系,标题被增加到中间容器的数组里面

4.一旦中间容器变动,修改boolean值,然后通知所有的观察者.update()

[android] 通过比对进行容器联动的更多相关文章

  1. Android实现两个ScrollView互相联动,同步滚动的效果

    公众号:smart_android 作者:loonggg 点击"阅读原文",可查看更多内容和干货 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意 ...

  2. android 带表头,左右两个联动的ListView

    package com.rytong.mylist; import java.util.ArrayList; import java.util.HashMap; import java.util.Li ...

  3. Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动

    需求:现要实现一个特殊UI的处理,如下图所示: 该布局的上面是一个“按钮”,中间是一个“空白布局(当然也可以是ViewPager等)”,下面是一个页面的导航菜单,底部是一个ListView. 要求:滑 ...

  4. Android自定义View(LineBreakLayout-自动换行的标签容器)

      最近一段时间比较忙,都没有时间更新博客,今天公司的事情忙完得空,继续为我的自定义控件系列博客添砖加瓦.本篇博客讲解的是标签自动换行的布局容器,正好前一阵子有个项目中需要,想了想没什么难度就自己弄了 ...

  5. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码

    Android精选源码 仿支付宝记账本功能,饼状图:数字键盘 android一款功能完善的电子书应用源码 Android自定义图标库,使用方便,扩展性强 android 3D立体无限旋转容器源码 an ...

  6. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  7. android中文api(79)——Gallery

    前言 本章内容是 android.widget.Gallery,版本为Android 2.3 r1,翻译来自"henly.zhang",欢迎大家访问他的博客:http://www. ...

  8. 【Android自学日记】五大布局常用属性

    线性布局(LinearLayout)常用属性: android:orientation="vertical"--决定子类控件的排布方式(vertical垂直:horizontal水 ...

  9. android用户界面之Gallery3D学习资料汇总

    一.Gallery之根蒂根基教程1.Android Gallery与衍生BaseAdapter容器 http://www.apkbus.com/android-6249-1-1.html 2.Andr ...

随机推荐

  1. iOS通过dSYM文件分析crash

    重点是dwarfdump --uuid命令 我们在iOS开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应 ...

  2. 【转】ListBox Dock Fill 总是有空隙的问题

    源地址:https://www.cnblogs.com/norsd/p/6359291.html ListBox Dock设置了Fill, Right等 设计界面如己所愿,但是实际运行时,底部总是有不 ...

  3. [sloved] IDE JavaServlet "Error: Could not find or load main class Servlet"

    [ sloved ] JavaServlet "Error: Could not find or load main class Servlet" 报错内容: 提供一份 Servl ...

  4. Linux环境下完成远程系统迁移

    一.基础 了解: netcat是个计算机网络公用程式,用来对网络连线TCP或者UDP进行读写.nc命令是netcat命令的简称,都是用来设置路由器.netcat 在2001年insecure.org对 ...

  5. UIImageView笔记

    image的伸缩变换 最好是image和imageview的size一致.如果不一致,最终的效果由imageView的contentMode和image的属性共同决定. 如果image没有cap in ...

  6. orange

    选型:使用orange系统 orange与kong的比较1.kong整体代码上较凌乱, orange相对较有条理2.kong本身不支持后台管理页面,只能通过api方式增,删,改plugin, oran ...

  7. CH2601 电路维修(双端队列bfs)建图恶心

    CH2601 电路维修 双端队列bfs,其实就是因为只有0和1所以可以直接2维护队列单调性(和优先队列一个道理) 建图的过程需要仔细斟酌(想一想id为什么这么写) 还有,空间要开够(很玄学),我一开始 ...

  8. javascript中children,childNodes等节点属性

    1.children与childNodes children: 获取子元素节点,无兼容问题 childnNodes: IE:获取子元素节点 非IE(chrome,Firefox等):获取子节点,包括元 ...

  9. StringBuffer与StringBuilder的区别比较

    关于AbstractStringBuilder 首先通过查看源码发现,StringBuffer与StringBuilder都继承自AbstractStringBuilder抽象类.而AbstractS ...

  10. my.工坊_ZZ

    1.查了下,可以将 考古升上去,但是 还是使用 2级的考古技能,这样比较赚,高级的反而不赚.但是看到有人说 考古升到 3/4 不能再用 洛阳铲 了. 于是有了两种情况,我暂定的做法:先将 考古升到2级 ...