shape绘制圆角
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/blue_dan_4" />
<corners
android:bottomLeftRadius="4dp"
android:bottomRightRadius="4dp" />
</shape>
隐藏电话号码的中间四位的正则表达式
String phone = "18306812696";
String phone_s = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
Log.e("===z",phone_s);//183****2696
ListView优化
ListView每次滚动都会调用getView方法,所以优化getVieiw是重中之重
convertView复用
convertView是刚刚滚动出可见区域的View的引用,此时它已经不可见,所以应该被复用以减少View的创建
LayoutInflater.inflate(resourceId,View)这个方法是用来通过pull的解析方式从XML文件生成一个View对象的,如果有成千上万个Viwe都要去解析XML生成View,会非常消耗性能
优化代码
View view = null;//getView方法要返回的View
if(convertView == null){//如果当前没有可以复用的View
view = LayoutInflater.from(context).inflate(resourceId,null);//那么就从XML文件生成一个View
}else{//否则
view = convertView;//就使用可以复用的View
}
ViewHolder的使用
findViewById这个方法是从ViewGroup的子View里面循环遍历找id与给出的ID相同的子View,还是比较耗时的
优化代码
ViewHolder viewHolder = null;
View view = null;//getView方法要返回的View
if(convertView == null){//如果当前没有可以复用的View
viewHolder = new ViewHolder();
view = LayoutInflater.from(context).inflate(resourceId,null);//那么就从XML文件生成一个View
viewHolder.resourceViewName = view.findViewById(resouceViewId);//从XML中找到对应的View
view.setTag(viewHolder);//将ViewHolder设置在当前ItemView的tag里面
}else{//否则
view = convertView;//就使用可以复用的View
viewHolder = (ViewHolder)convertView.getTag();//从复用的View中取出viewHoder
}
class ViewHolder {
TextView name;
}
网友评论