美文网首页
设计模式-adapter设计模式

设计模式-adapter设计模式

作者: woochen123 | 来源:发表于2017-11-14 21:58 被阅读0次

效果图

adapter.gif

1.定义

将一种对象适配成另一种对象

2.示例

   MyListView myListView = (MyListView) findViewById(R.id.myListView);
        //1.模拟服务器传回数据
        List<String> mDatas = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            mDatas.add(i+"");
        }
        //2.将数据转化为视图View
        MyAdapter adapter = new MyAdapter(mDatas,this);
        //3.将View显示在屏幕上
        myListView.setAdapter(adapter);
/**
 * 项目名称:MyApplication
 * 类描述:转化的接口(通过该适配器将数据集合转化为MyListView需要的View)
 * 创建人:woochen123
 * 创建时间:2017/11/14 21:35
 */
public interface BaseAdapter {
     int getCount();
     View getView(int position);
}
/**
 * 项目名称:MyApplication
 * 类描述:
 * 创建人:woochen123
 * 创建时间:2017/11/14 21:39
 */
public class MyAdapter implements BaseAdapter {
    private List<String>  mDatas;
    private Context mContext;

    public MyAdapter(List<String> datas,Context context) {
        this.mDatas = datas;
        mContext = context;
    }

    @Override
    public int getCount() {
        return mDatas.size();
    }

    @Override
    public View getView(int position) {
        TextView textView  = new TextView(mContext);
        textView.setText(mDatas.get(position));
        return textView;
    }
}
/**
 * 项目名称:MyApplication
 * 类描述:
 * 创建人:woochen123
 * 创建时间:2017/11/14 21:25
 */
public class MyListView extends ScrollView {
    LinearLayout mLinearLayout;
    public MyListView(Context context) {
        this(context,null);
    }

    public MyListView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mLinearLayout = new LinearLayout(context);
        mLinearLayout.setOrientation(LinearLayout.VERTICAL);
        addView(mLinearLayout,0);
    }

    @Override
    public void addView(View child) {
        mLinearLayout.addView(child);
    }

    public void setAdapter(BaseAdapter adapter) {
        for (int i = 0; i < adapter.getCount(); i++) {
            addView(adapter.getView(i));
        }
    }
}

3.使用

listview的适配器

4.总结

1.适配器模式可以将两种不同的类型实现进行转化
2.有类适配器和对象适配器两种(类适配器由于要继承被适配的类,所以可能导致目标类存在冗余的方法,所以对象适配器会比较灵活)

相关文章

  • 11.3设计模式-适配器-详解

    设计模式-适配器adapter模式 adapter模式详解 adapter模式在android中的实际运用1.li...

  • 浅谈设计模式之适配器模式

    适配器模式(Adapter Pattern) 概述: 在设计模式中,适配器模式(adapter pattern)有...

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 设计模式-adapter设计模式

    效果图 1.定义 将一种对象适配成另一种对象 2.示例 3.使用 listview的适配器 4.总结 1.适配器模...

  • Adapter模式(设计模式)

    对象适配器模式(使用委托的适配器) 个人理解 用一个比喻来描述比较好,比如:中国现在用电的标准电压是220V交流电...

  • Typescript 适配器模式(Adapter)

    标签: 前端 设计模式 适配器模式 typescript Adapter 请仔细阅读下面代码,理解其中的设计理念。...

  • 设计模式-Adapter

    一,Adapter模式详解 适配器模式定义将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类一起...

  • Adapter 设计模式

    adapter 模式详解 类的适配器模式 把适配的类的 API转换为目标类的API。 对象适配器对象的适配器模式 ...

  • 6、结构型模式-适配器设计模式

    1、接口之间的桥梁-适配器设计模式 简介:讲解Adapeter设计模式和应用场景 适配器模式(Adapter Pa...

  • 浅谈GoF23设计模式-“Adapter”模式

    “Adapter”模式为结构型设计模式,C#当中主要使用对象适配器。“Adapter”模式定义:将一个类的接口转换...

网友评论

      本文标题:设计模式-adapter设计模式

      本文链接:https://www.haomeiwen.com/subject/avcqvxtx.html