关于Holder持有者类对象

本文介绍如何在Android中利用DataHolder类来保存和恢复多个对象,包括TextView和SlidingDrawer类型的数据。通过创建DataHolder类并将其作为数据类型保存在Activity的非配置实例中,实现数据的持久化。重启Activity后,可以通过专门的方法获取DataHolder对象,进而直接获取之前保存的数据。

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

可是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);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值