适配器模式是一种很常见的模式,做过安卓的想必对适配器再熟悉不过了,对于生活中的例子比如你需要在欧洲国家使用美国制造的笔记本电脑,就可能需要一个交流电的适配器,用来让美式插头也可以通过适配器得到电力。
下面这段代码是我稍微模仿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{
}