提升ListView的运行效率

public View getView(int position, View converView, ViewGroup parent){
    Fruit fruit = getItem(position);
    View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
    ImageView fruitImage = (ImageView) view.findViewById(R.id.furit_image);
    TextView fruitName = (TextView) view.findViewById(R.id.furit_name);
    fruitImage.setImageResource(fruit.getImageId());
    fruitName.setText(fruit.getName());
    return view;
}

1 . 以上的ListView的运行效率很低,因为在FruitAdapter的getView()方法中,每次都将布局重新加载一遍,当ListView快速滚动的时候,这就会成为性能的饿瓶颈。

 public View getView(int position, View converView, ViewGroup parent){
     Fruit fruit = getItem(position);
     View view;
     if (converView ==null){
         view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
     } else {
         view = converView;
     }
     ImageView fruitImage = (ImageView) view.findViewById(R.id.furit_image);
     TextView fruitName = (TextView) view.findViewById(R.id.furit_name);
     fruitImage.setImageResource(fruit.getImageId());
     fruitName.setText(fruit.getName());
     return view;
 }```
2 .  如果改为上述,现在我们可以在getView()方法中进行判断,如果cnvertView为null,则使用LayoutInfater去加载布局,如果不为null则直接对converView进行崇从用。这样就大大提高了ListView的运行效率,在快速滚动的时候也可以表现出更好的性能。

















最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容