您的位置:首页 > 职场人生

安卓面试方面的一些知识(仅供参考)

2015-04-26 22:20 302 查看
一.关于lisView的优化问题

1.重用了convertView,很大程度上减少了内存的消耗,通过判断convertView是否为空,是的话就要创建出一个视图来然后给这个视图数据,然后再把这个视图返回到底层,呈现给客户。

ViewCode

publicViewgetView(intposition,ViewconvertView,ViewGroupparent)

{

if(convertView==null)

{

convertView=LayoutInflater.from(context).inflate(R.layout.section_list_item1,null);

}

TextViewtv_name=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_name);

TextViewtv_phone=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_phoneNum);

ContactInfo1confo=contacts.get(position);

if(confo!=null){//toseteveryitem'stext

tv_name.setText(confo.getContactName());

tv_phone.setText(confo.getContact_Phone());

}

returnconvertView;

}

2.通过一个内部类 class ViewHolder ,这个ViewHolder,用来标示view中的一些控件,方便对一些事件进行相应的操作,比如button等等,这样可以不用每次都findviewById了,减少了性能的消耗,同时重用了convertView,很大程度上减少了内存的消耗

ViewCode

publicViewgetView(intposition,ViewconvertView,ViewGroupparent)

{

ViewHolderholder;

if(convertView==null){

convertView=LayoutInflater.from(context).inflate(R.layout.section_list_item1,null);

holder=newViewHolder();

holder.tv_name=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_name);

holder.tv_phone=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_phoneNum);

convertView.setTag(holder);

}

else

{

holder=(ViewHolder)convertView.getTag();

}

ContactInfo1confo=contacts.get(position);

Log.i("my","confo"+confo.getContactName());

if(confo!=null){//toseteveryitem'stext

holder.tv_name.setText(confo.getContactName());

holder.tv_phone.setText(confo.getContact_Phone());

}

returnconvertView;

}

classViewHolder

{

TextViewtv_name,tv_phone;

}

3.使用了内部类ViewHOlder,并将它定位静态,用static 修饰,重用了convertView,而且还用了一个临时的变量 view = convertView,修改了view ,然后返回view。

ViewCode

@Override

publicViewgetView(intposition,ViewconvertView,ViewGroupparent)

{

Viewview=convertView;

ViewHolderholder;

if(view==null){

view=LayoutInflater.from(context).inflate(R.layout.section_list_item1,null);

holder=newViewHolder();

holder.tv_name=(TextView)view.findViewById(R.id.contact_contactinfoitem_tv_name);

holder.tv_phone=(TextView)view.findViewById(R.id.contact_contactinfoitem_tv_phoneNum);

view.setTag(holder);

}

else

{

holder=(ViewHolder)view.getTag();

}

ContactInfo1confo=contacts.get(position);

Log.i("my","confo"+confo.getContactName());

if(confo!=null){//toseteveryitem'stext

holder.tv_name.setText(confo.getContactName());

holder.tv_phone.setText(confo.getContact_Phone());

}

returnview;

}

classViewHolder

{

TextViewtv_name,tv_phone;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: