android 之如何优化 ListView 简单解释
2015-04-23 16:25
330 查看
众所周知,在开发过程中,ListView的优化是比较重要的
那么,如何去优化呢?
ListView的提升效率,其实就是在于adapter中getView方法的优化,那么如何使的getView优化呢?
1、在getView() 中重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,
是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。
比如:listview 屏幕显示10条数据,当用户滑动listview的时候,第11条数据出现的时候,第一条数据
就会被android本身提供的 Recycler,将这条item(View)放进RecycleBin(回收站)中,然后显示新视
图的时候,从RecycleBin中重复用这个View。就不会造成每次都要去创建新的View,而节约了大量的资源。
2、自身写一个ViewHold 类,这个ViewHolder,用来标识view中一些控件,方便进行一些事件相应操作的设置,
这样就不用每次getView() 的View只要找一次控件就好了,不用每次都去寻找
代码表示如下:
// getView 方法的优化
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_list_item, null);
ViewHolder viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.fillView(getItem(position));
return convertView;
}
// 这个类是View的显示,也就是Listview的每条显示的东西
class ViewHolder {
private ImageView iv_NewsImage;
private TextView tv_NewsTitle;
private TextView tv_NewsDate;
public ViewHolder(View convertView) {
iv_NewsImage = (ImageView) convertView.findViewById(R.id.newImage);
tv_NewsTitle = (TextView) convertView.findViewById(R.id.newTitle);
tv_NewsDate = (TextView) convertView.findViewById(R.id.newDate);
}
public void fillView(Object item) {
final NewsInfo news = (NewsInfo) item;
tv_NewsTitle.setText(news.getNewTitle());
tv_NewsDate.setText(getDate(news.getNewDate()));
ImageLoader.getInstance().displayImage(news.getNewImageUrl(),
iv_NewsImage);
}
private String getDate(long time) {
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return formatter.format(date);
}
}
那么,如何去优化呢?
ListView的提升效率,其实就是在于adapter中getView方法的优化,那么如何使的getView优化呢?
1、在getView() 中重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,
是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。
比如:listview 屏幕显示10条数据,当用户滑动listview的时候,第11条数据出现的时候,第一条数据
就会被android本身提供的 Recycler,将这条item(View)放进RecycleBin(回收站)中,然后显示新视
图的时候,从RecycleBin中重复用这个View。就不会造成每次都要去创建新的View,而节约了大量的资源。
2、自身写一个ViewHold 类,这个ViewHolder,用来标识view中一些控件,方便进行一些事件相应操作的设置,
这样就不用每次getView() 的View只要找一次控件就好了,不用每次都去寻找
代码表示如下:
// getView 方法的优化
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_list_item, null);
ViewHolder viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.fillView(getItem(position));
return convertView;
}
// 这个类是View的显示,也就是Listview的每条显示的东西
class ViewHolder {
private ImageView iv_NewsImage;
private TextView tv_NewsTitle;
private TextView tv_NewsDate;
public ViewHolder(View convertView) {
iv_NewsImage = (ImageView) convertView.findViewById(R.id.newImage);
tv_NewsTitle = (TextView) convertView.findViewById(R.id.newTitle);
tv_NewsDate = (TextView) convertView.findViewById(R.id.newDate);
}
public void fillView(Object item) {
final NewsInfo news = (NewsInfo) item;
tv_NewsTitle.setText(news.getNewTitle());
tv_NewsDate.setText(getDate(news.getNewDate()));
ImageLoader.getInstance().displayImage(news.getNewImageUrl(),
iv_NewsImage);
}
private String getDate(long time) {
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return formatter.format(date);
}
}
相关文章推荐
- android listview优化及其解释
- [Android实例]Listview异步加载图片之优化篇(有图有码有解释)
- Android 之如何优化ListView
- Android ListView优化 如何省略ViewHolder方法
- Android——ListView的简单优化
- android:如何将数据库取出放进ListView,并进行增删查改的简单记录(14)
- [置顶] Android开发之ListView详解 以及简单的listView优化
- Android开发之ListView详解 以及简单的listView优化
- Android—ListView 的使用以及简单优化
- android ListView的简单使用与优化
- Android开发之ListView详解 以及简单的listView优化
- android问题及其解决-优化listView卡顿和如何禁用ListView的fling
- 【Android UI】ListView的使用和简单优化
- Android面试(二)ListView优化,ListView和Scrollview冲突问题,mvc模式,什么是ANR 如何避免它?
- Android常用控件ListView的简单优化之一: 在ViewHolder中定义static静态内部类
- Android之ListView的简单优化两步走
- 纪录片——Android中ListView简单使用及简单优化
- Android研究院之ListView原理学习与优化总结
- Android优化系列之ListView优化老生常谈
- 【android】6、ListView优化