安卓面试方面的一些知识(仅供参考)
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;
}
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;
}
相关文章推荐
- iOS 网络请求(一些概念性方面的知识)
- 安卓面试技术点之xmpp知识准备Socket服务器的终结
- 最新的安卓面试知识(java、安卓)
- 一些面试基本知识(Android篇一)
- 安卓界面布局的一些基本知识
- 面试中的一些必须知道的简单知识
- 关于矩阵方面的一些知识
- web 安全方面的一些知识,希望各位大虾能补充的更完善!
- 一些面试基本知识(Android篇一)
- 冲向大牛之安卓---2014.11月面试经常碰到的一些问题
- 开通了公共微信号:xuxiaopenglvshi,扫一扫关注我吧,我会定期分享一些法律方面的知识
- 前端面试的一些常用知识
- 转关于一些计算机面试知识总结
- 笔试面试常考的一些小知识
- 关于安全方面的一些函数和知识
- 图像面试的一些基本知识
- ios 方面常见的一些面试问题
- java集群技术面试的一些知识准备
- 一些面试基本知识(JAVA篇一)
- 音频的一些知识 面试必看