適配器模式是一種很常見的模式,做過安卓的想必對適配器再熟悉不過了,對於生活中的例子比如你需要在歐洲國家使用美國製造的筆記本電腦,就可能需要一個交流電的適配器,用來讓美式插頭也可以通過適配器得到電力。
下面這段代碼是我稍微模仿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{
}