zoukankan      html  css  js  c++  java
  • Android listview 的优化

    接[Android listview的应用][1]
    在我们上一篇[Android listview的应用][1]中,我们的adapter中的getView()方法中每次都将布局重新加载一遍,这样就会导致我们的listview的运行效率很低.
    [1]:http://www.cnblogs.com/stareblankly/p/5057340.html
    如果我们称上一篇是逗比式,那么接下来就是普通式.

    @Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		Fruit fruit=getItem(position);
    		View view;
    		if (convertView==null) {
    			view=LayoutInflater.from(getContext()).inflate(resourceid, null);
    		}else {
    			view=convertView;
    		}
    		TextView tv=(TextView) view.findViewById(R.id.fruit_name);
    		ImageView iv=(ImageView) view.findViewById(R.id.furit_image);
    		iv.setImageResource(fruit.getImageId());
    		tv.setText(fruit.getName());
    		return view;
    	}
    

    可以看到,在代码中我们对convertView进行了判断,只有当convertView为空的时候,我们才去加载布局,不过不为空则直接对convertView进行重用,这样就大大的提高了ListView的运行效率.不过其实我们这部分代码其实还是可以继续进行优化的,接下来就是ListView的文艺式.

    @Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		Fruit fruit=getItem(position);
    		View view;
    		ViewHolder viewHolder;
    		if (convertView==null) {
    			view=LayoutInflater.from(getContext()).inflate(resourceid, null);
    			viewHolder=new ViewHolder();
    			viewHolder.iv=(ImageView) view.findViewById(R.id.furit_image);
    			viewHolder.tv=(TextView) view.findViewById(R.id.fruit_name);
    			view.setTag(viewHolder);	//将ViewHolder存储在view中
    		}else {
    			view=convertView;
    			viewHolder=(ViewHolder) view.getTag();	//重新获取viewHolder
    		}
    		viewHolder.iv.setImageResource(fruit.getImageId());
    		viewHolder.tv.setText(fruit.getName());
    		return view;
    	}
    	
    	class ViewHolder{
    		ImageView iv;
    		TextView tv;
    	}
    

    在这里我们定义了一个内部类ViewHolder用来存放控件,然后把ViewHolder存储在view中,这样每次加载的时候就不用重新根据ID来获取控件来,这样我们listview运行的效率又快乐很多.

  • 相关阅读:
    Chromium 和Webkit 3月14日的最近进展:多标签选择、标签标题省略、动画API和新的Chromium Logo
    奇妙的HTML5 Canvas动画实例
    XNA那些事(一) 框架工作原理
    实现跨浏览器的HTML5占位符
    编写超级可读代码的15个最佳实践
    谈HTML5和CSS3的国际化支持
    HTML5 Guitar Tab Player
    如何设置让网站禁止被爬虫收录?robots.txt
    YourPHP笔记
    Robots.txt  禁止爬虫
  • 原文地址:https://www.cnblogs.com/stareblankly/p/5057613.html
Copyright © 2011-2022 走看看