首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

策略模式及Android源码中的应用

策略模式和工厂模式的区别 工厂模式 策略模式 创建型的设计模式 行为型的设计模式 关注对象创建 关注行为的选择 黑盒子(无需知道具体的实现过程) 白盒子(知道具体的实现过程) 源码中的策略模式实现 ListAdapter...仍然调用的是 ListView.setAdapter(…) 方法,传入的是ArrayAdapter或BaseAdapter等,查看 ListView 源码,发现 setAdapter 方法的参数是一个 ListAdapter...,如下: @Override public void setAdapter(ListAdapter adapter) { ........ } public interface...ListAdapter extends Adapter{ ......... } 可以看到 ListAdapter 是一个接口,ArrayAdapter 和 BaseAdapter 是它的一个实现类...可以发现 ListAdapter 就是 strategy 接口,ArrayAdpater 等就是具体的实现类,而在 ListView 中引用的是 接口 ListAdapter,可以证实这就是一个 策略模式

28720

Android 中的那些策略模式

策略模式例子 1 : ListAdapter 在 RecyclerView 还没火起来前,ListView 是一个很重要的组件,我们通常在布局里写个 ListView 组件,然后在代码中 setAdapter...: 我们可以看到,当更换 Adapter 的具体实现时,仍然调用的是 ListView.setAdapter(…) 方法,查看 ListView 源码,发现 setAdapter 方法的参数是一个 ListAdapter...: 继续看 ListAdapter 源码和类结构: 可以看到 ListAdapter 是一个接口,ArrayAdapter 和 BaseAdapter 是它的一个实现类。...对比文章开始给出的 策略模式 UML 图,可以发现 ListAdapter 就是 strategy 接口,ArrayAdpater 等就是具体的实现类,而在 ListView 中引用的是 接口 ListAdapter...setAdapter 一样,ValueAnimator 的 setInterpolator 方法中也引用的是 接口 TimeInterpolator: TimeInterpolator 源码及类结构: 跟 ListAdapter

47640

android scrollview嵌套listview计算高度的问题

setListViewHeightBasedOnChildren(ListView listView) {              // 获取ListView对应的Adapter              ListAdapter... listAdapter = listView.getAdapter();              if (listAdapter == null) {                  return...;              }              int totalHeight = 0;              for (int i = 0, len = listAdapter.getCount...(); i < len; i++) {                  // listAdapter.getCount()返回数据项的数目                  View listItem... = listAdapter.getView(i, null, listView);                  // 计算子项View 的宽高                  listItem.measure

2.2K60

android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」

ListView中想用一个getView()方法,但是不同的数据,不同的需求,会有不同的getView()结果,所以getView()不能写死了,那么可能就想到了用适配器模式 所以ListView里面包含了一个ListAdapter...的成员变量,实际上是ListView继承了AbsListView,ListAdapter变量是在AbsListView中声明的 然后BaseAdapter是实现了ListAdapter的,那么我们自定义的...***Adapter继承了BaseAdapter,其实也就相当于间接实现了ListAdapter,并且***Adapter会具体去实现getView()方法 那么ListView就可以通过调用setAdapter...(ListAdapter adapter)方法,将***Adapter传进去,从而实现了我们想要的结果 Java 适配器模式有两种: 类适配器 对象适配器 场景: 假如A类想用M方法,X类有M方法,但是

67920

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券