android 观察者模式

今天主要记一下自己的一个简单的观察者模式demo,现在只是练习。还没有用到实战项目中,先记录下来方便自己后期查看吧。

就是一个点击按钮后,运用观察者模式更新另外一个textView的demo,等我把观察者模式正式运用到到项目中时,再来正式更新这篇blog


MainActivity:

public class MainActivity extends ListActivity {

	private Button btnObservable;
	private TextView btnObserver;
	Message message = new Message();
	User user;
	Looker looker;

	private Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			switch(msg.what){
			
			case 1:
				btnObserver.setText("name: "+looker.getMyName());
				break;
			default:
					break;
			}
			

		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btnObservable = (Button)findViewById(R.id.btn_observable);
		btnObserver = (TextView) findViewById(R.id.btn_observer);

		user = new User("lei");
		looker = new Looker();
		user.addObserver(looker);
		
		btnObservable.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				
				user.setName("update test");
				handler.sendEmptyMessage(1);
			}
			
		});
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		user.deleteObserver(looker);
	}
}



观察目标:

import java.util.Observable;


//观察目标
public class User extends Observable{

	private String name;
	
	public User(String name){
		this.name = name;
		setChanged();
		notifyObservers();
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
		setChanged();
		notifyObservers();
	}

}


观察者:

import java.util.Observable;
import java.util.Observer;

import android.util.Log;


//观察者
public class Looker implements Observer{

	private String myName;
	
	
	
	public String getMyName() {
		return myName;
	}



	public void setMyName(String myName) {
		this.myName = myName;
	}



	@Override
	public void update(Observable observable, Object data) {
		User user = (User)observable;
		this.myName = " vvv "+user.getName();
		Log.i("lei", "观察者已经重置name");
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值