ListView优化

主要针对getView
1.判断converView是否存在.
2.通过ViewHolder进行优化.

package test.listviewtest;

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/**
 * Created by amours on 2017/3/28.
 */

public class FruitAdapter extends ArrayAdapter<Fruit> {
    private int resourceId;

    public FruitAdapter(Context context, int resource, List<Fruit> objects) {
        super(context, resource, objects);
        resourceId =resource;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Fruit fruit=getItem(position);
//        View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
        View view;
        ViewHolder viewHolder;
        if (convertView==null){
            view=LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
            viewHolder=new ViewHolder();
            viewHolder.fruitImage= (ImageView) view.findViewById(R.id.fruit_image);
            viewHolder.fruitName= (TextView) view.findViewById(R.id.fruit_name);
            view.setTag(viewHolder);
//如果不存在,读取图片id与名字
        }else{
            view=convertView;
            viewHolder= (ViewHolder) view.getTag();
//如果存在,直接得到
        }
        viewHolder.fruitImage.setImageResource(fruit.getImageId());
        viewHolder.fruitName.setText(fruit.getName());
//        ImageView imageView= (ImageView) view.findViewById(R.id.fruit_image);
//        TextView textView= (TextView) view.findViewById(R.id.fruit_name);
//        imageView.setImageResource(fruit.getImageId());
//        textView.setText(fruit.getName());
        return view;

    }
    class ViewHolder{
        ImageView fruitImage;
        TextView fruitName;
    }
}

posted @ 2017-04-10 16:41  amours  阅读(91)  评论(0编辑  收藏  举报