当前位置: 代码迷 >> 综合 >> Android之自定义适配器
  详细解决方案

Android之自定义适配器

热度:75   发布时间:2023-10-14 07:54:05.0

以下是关于自定义适配器的理解:

1.getView()的ViewGrop parent的参数意义

   parent是Item的view的view的父视图,也就是说适配器中封装的ViewGrop来盛放item

2.LayoutInflate.inflate()三个参数含义

LayoutInflate.inflate(int resourceId, ViewGroup root, boolean attachToRoot)三个参数含义:

首先明白下面知识点:

给控件所指定的layout_width和layout_height到底是什么意思?该属性的表示一个控件在容器中的大小,就是说这个控件必须在容器中,这个属性才有意义,否则无意义。

 

当:root == null,无论attachToRoot 是否ture还是false

ResourceId的根节点没有依赖的父布局(容器),所以width和height属性失效

 

当:root != null,如果attachToRoot = ture;

则将resourceId对应得布局加载到root中,并将root返回;resourceId中的width和height属性有效

当:root != null,如果attachToRoot = false;

则将resourceId对应的view设置容器为root,但是不添加到root中,resourceId中的width和height属性有效

3.View.inflate()和LayoutInfalter.from(context).inflate()的对比

View.inflate() 和 LayoutInfalter.from(context).inflate() 都能实现把xml布局文件转化为view对象,但是前者只是单单转化为view对象,而后者可以将转化完的view对象添加给其他容器。

举个例子:

在RecycleView的Adapter中使用View.inflate() 进行创建item布局会产生虽然xml文件布局是匹配父元素的,但是运行后却是包裹内容的效果。

而用LayoutInfalter.from(context).inflate() 加载item布局时可以在加载时把item布局添加到ViewGroup容器中,从而以ViewGroup为父元素来匹配。

 

  相关解决方案