設計模式總結之適配器模式

適配器模式是一種很常見的模式,做過安卓的想必對適配器再熟悉不過了,對於生活中的例子比如你需要在歐洲國家使用美國製造的筆記本電腦,就可能需要一個交流電的適配器,用來讓美式插頭也可以通過適配器得到電力。

下面這段代碼是我稍微模仿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{

}







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