所以我们要找到办法来利用convertView的这个特性。

    首先解决convertView重复创建的问题。

    我们可以先判断convertView是否为null,如果为null,再重新创建。

if(convertView == null){
   convertView = LayoutInflater.from(context).inflate(R.layout.item_pratice, null);
}

    这解决了convertView重复创建的问题。

    当我们要使用布局中的组件时,会先通过findViewById来声明组件,这在一般的页面中没问题,但如果是一个列表,就有问题了。

    findViewById是很浪费时间的。

    findViewById要遍历View的树形结构来找到对应的id,而且这个遍历是从头到尾,所以如果该View的层级比价复杂,这个查询就比较耗时了。

    我们在布局文件中采用@+id的形式指定控件id,就会在R文件中生成一个id,也可以采用@id的形式,通过在ids文件中声明一个id。

网友评论