adapter设计模式
2018-03-22 16:15
155 查看
适配器模式就是将某一些对象转成我们需要的适配的对象。分为两种一种是类适配器,还有一种是对象适配器
测试
RMBAdapter
UsdApater
测试
测试
BaseAdapter
PeakmainListView继承于ScrollView
使用
举个例子:以前公司只支持人民币付钱,后来走向国际化支持美元
一般写法public class RMBAdapter { private float mRmb; public RMBAdapter(float rmb) { this.mRmb = rmb; } //获得人人民币 public float getRmb() { return mRmb; } //获得美元 public float getUsd() { return mRmb / 4f; } }
测试
public class Client { public static void main(String[] args) { RMBAdapter adapter = new RMBAdapter(800); float rmb = adapter.getRmb(); float usd = adapter.getUsd(); System.out.println(rmb + "/" + usd); } }
类适配器使用
IUsedAdapterpublic interface IUsdAdapter { float getUsd(); }
RMBAdapter
public class RMBAdapter { private float mRmb; public RMBAdapter(float rmb) { this.mRmb = rmb; } //获得人人民币 public float getRmb() { return mRmb; } }
UsdApater
public class UsdAdapter extends RMBAdapter implements IUsdAdapter{ 4000 private float mRmb; public UsdAdapter(float rmb) { super(rmb); this.mRmb=rmb; } @Override public float getUsd() { return mRmb/4f; } }
测试
public class Client { public static void main(String[] args) { UsdAdapter adapter=new UsdAdapter(600); float rmb = adapter.getRmb(); float usd = adapter.getUsd(); System.out.println(rmb + "/" + usd); } }
对象适配器只是修改了UsdAdapter
public class UsdAdapter implements IUsdAdapter { private RMBAdapter mAdapter; public UsdAdapter(RMBAdapter adapter) { this.mAdapter=adapter; } @Override public float getUsd() { return mAdapter.getRmb()/4f; } }
测试
public class Client { public static void main(String[] args) { RMBAdapter rmbAdapter=new RMBAdapter(700); UsdAdapter adapter=new UsdAdapter(rmbAdapter); float rmb = rmbAdapter.getRmb(); float usd = adapter.getUsd(); System.out.println(rmb + "/" + usd); } }
2.再举个例子,做个简单的listview
Adapter接口public interface Adapter { //获得数量 int getCount(); //view View getView(int position, ViewGroup parent); }
BaseAdapter
public class BaseAdapter implements Adapter { private List<String> mDatas; private Context mContext; public BaseAdapter(Context context, List<String> datas) { this.mContext = context; this.mDatas = datas; } @Override public int getCount() { return mDatas.size(); } @Override public View getView(int position, ViewGroup parent) { TextView textView = (TextView) LayoutInflater.from(mContext).inflate(R.layout.item_main, parent,false); textView.setText(mDatas.get(position)); return textView; } }
PeakmainListView继承于ScrollView
public class PeakmainListView extends ScrollView { private LinearLayout mContainer; private Adapter mAdapter; public PeakmainListView(Context context) { this(context,null); } public PeakmainListView(Context context, AttributeSet attrs) { this(context, attrs,0); } public PeakmainListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContainer=new LinearLayout(context); mContainer.setOrientation(LinearLayout.VERTICAL); addView(mContainer,0); } @Override public void addView(View child) { mContainer.addView(child); } public void setAdapter(BaseAdapter adapter) { this.mAdapter = adapter; int count = mAdapter.getCount(); for (int i = 0; i < count; i++) { View view = mAdapter.getView(i, mContainer); addView(view); } } }
使用
mListView = (PeakmainListView) findViewById(R.id.darren_lv); for (int i=0;i<100;i++){ items.add(i+""); } mListView.setAdapter(new BaseAdapter(this,items));
相关文章推荐
- 设计模式学习笔记1 - Adapter(适配器模式)
- 设计模式的征途—7.适配器(Adapter)模式
- JAVA设计模式-适配器模式(Adapter)
- 设计模式--适配器(Adapter)模式
- 设计模式之(Adapter)适配器模式
- C++ 设计模式(七)Adapter模式
- 设计模式研究(三)Proxy与Adapter
- 设计模式研究(三)Proxy与Adapter
- 【初学设计模式】Object Adapter (对象适配器)
- 设计模式研究(三)Proxy与Adapter
- C++设计模式之Adapter
- 设计模式研究(三)Proxy与Adapter
- 设计模式(6) 结构型模式和适配器模式(ADAPTER)
- 设计模式(9)-适配器模式(Adapter)
- JAVA设计模式-适配器(类适配器、对象适配器)模式-Adapter
- 设计模式之Adapter(1)
- Java设计模式之适配器模式(Adapter模式)介绍
- 二十三种设计模式(java版)之Adapter
- Java设计模式(一) Adapter(适配器)模式及I/O实例引申
- 设计模式之(十三、适配器模式)Adapter