关于Holder持有者类对象

经常遇到这样的功能,想调用一次方法时希望返回多个对象。

可是return语句却只允许返回一个对象,因此,解决办法只有创建一个对象,用它来持有想要返回的多个对象。

如,可以创建一个DataHolder类:

class DataHolder {
    TextView tv;
    SlidingDrawer mDrawer;
}

这个类持有一个TextView和一个SlidingDrawer对象,把它放到另一个类里面,它就可以作为一种数据类型为DataHolder的对象存在。当得到这个对象后,就可以直接得到它里面的两个数据。比如,在销毁一个Activity类之前,想要保存TextView和SlidingDrawer类型的两个数据。在重启这个Activity后,再去获取这两个类型的数据,怎么办?可以在销毁前把数据以DataHolder类型保存起来,重启Activity时再用专门的方法去得到这个DataHolder对象,然后就可直接获取之前保存的tv和mDrawer对象了。

销毁Activity之前,调用:(其中t2、mDrawer是销毁Activity前的实例对象)

public Object onRetainNonConfigurationInstance() {
		DataHolder dh = new DataHolder();
		dh.tv=t2;
		dh.mDrawer=mDrawer;
		return dh;
	}
重启Activity后,调用:

DataHolder dh=(DataHolder)getLastNonConfigurationInstance(); 

一般来说,创建Holder持有者类,可以在里面放入很多的类成员变量,在这个类的外部类里面,要多次访问到这些类型的数据时,持有者类就大有作为了,因为可以通过它的实例去直接得到那些类型的对象,像这样:DataHolder holder=new DataHolder(); 访问TextView对象用holder.tv,访问SlidingDrawer对象用holder.mDrawer。

这个持有者对象还可以继承其他的类或接口,如class DataHolder implements OnClickListener{ public void onClick(View v){...}},这样的话,如果有一个holder对象,一个按钮可以直接设置监听事件了 button.setOnClickListener(holder);

你可能感兴趣的:(关于Holder持有者类对象)