布局 :一个Button,一个ListView
package com.lyb.observer;
/**
* 定义每个观察者要实现的功能
*/
public interface Observer {
public String save();
}
观察者:
package com.tarena.observer;
/**
* 观察者
*/
public class WuKong implements Observer {
@Override
public String save() {
// TODO Auto-generated method stub
return "WuKong来啦";
}
}
package com.lyb.observer;
/**
* 观察者
*/
public class BaJie implements Observer {
@Override
public String save() {
// TODO Auto-generated method stub
return "BaJie来啦";
}
}
package com.lyb.observer;
/**
* 观察者
*/
public class ShaSeng implements Observer {
@Override
public String save() {
// TODO Auto-generated method stub
return "ShaSeng来啦";
}
}
目标:
package com.lyb.observer;
import java.util.ArrayList;
/**
* 目标 ,目标发生变化 ,观察者要知道
*
*/
public class TangSeng {
//存放观察者
ArrayList<Observer> list=new ArrayList<Observer>();
//接收观察者
public void register(Observer observer){
list.add(observer);
}
//发生变化通知观察者
public ArrayList<String> help(){
ArrayList<String> stringList=new ArrayList<String>();
for (Observer observer:list) {
stringList.add(observer.save());
}
return stringList;
}
}
MainActivity代码:
package com.lyb.observer;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
TangSeng tangSeng;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tangSeng=new TangSeng();
tangSeng.register(new WuKong());
tangSeng.register(new ShaSeng());
tangSeng.register(new BaJie());
Button btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ListView lv=(ListView) findViewById(R.id.listView1);
ArrayList<String> list=tangSeng.help();
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplication(),android.R.layout.simple_list_item_1,list );
lv.setAdapter(adapter);
}
});
}