设计模式总结之适配器模式

适配器模式是一种很常见的模式,做过安卓的想必对适配器再熟悉不过了,对于生活中的例子比如你需要在欧洲国家使用美国制造的笔记本电脑,就可能需要一个交流电的适配器,用来让美式插头也可以通过适配器得到电力。

下面这段代码是我稍微模仿ListView的适配器模式,但实际上ListView的适配要比我的麻烦的多的多。。。

public interface Adapter {
	public int getCount();
	public Object getItem(int position);
	public long getItemId(int position);
	public View getView(int position, View convertView, ViewGroup parent);
	
}

public class AdapterTest {
	public static void main(String[] args) {
		ListView listView = new ListView();
		ArrayList<String> arrayList = new ArrayList<>();
		arrayList.add("一");
		arrayList.add("二"); 
		listView.setListAdapter(new MyTestAdapter(arrayList));
		listView.obtainView();
	}
}
public abstract class BaseAdapter extends ListAdapter{

}

public abstract class ListAdapter implements Adapter{


}
public class ListView extends View{
	private ListAdapter listAdapter;
	private static ViewGroup vp = new ViewGroup(); 

	public ListAdapter getListAdapter() {
		return listAdapter;
	}

	public void setListAdapter(ListAdapter listAdapter) {
		this.listAdapter = listAdapter;
	}
	public void obtainView(){
		for (int i = 0; i < listAdapter.getCount(); i++) {
			listAdapter.getView(i, this, vp);//实际上list对此的操作要麻烦的多
		}
	}
}
public class MyTestAdapter extends BaseAdapter{
	ArrayList<String> arrayList;
	
	public MyTestAdapter(ArrayList<String> arrayList) {
		super();
		this.arrayList = arrayList;
	} 

 
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return arrayList.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View view = new View();
		return view;
	}

}
public class View {
	public static int i = 0;
	public View() {
			i++;
			System.out.println(i);
	}
}
public class ViewGroup extends View{

}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章