Android 自定义listView中的持有者是如何创建的?

Android 自定义listView中的持有者是如何创建的?,android,android-listview,Android,Android Listview,我在下面的链接中看到了自定义listview的程序 这是自定义适配器: public class WeatherAdapter extends ArrayAdapter<Weather>{ Context context; int layoutResourceId; Weather data[] = null; public WeatherAdapter(Context context, int layoutResourceId, We

我在下面的链接中看到了自定义listview的程序

这是自定义适配器:

public class WeatherAdapter extends ArrayAdapter<Weather>{

    Context context; 
    int layoutResourceId;    
    Weather data[] = null;

    public WeatherAdapter(Context context, int layoutResourceId, Weather[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        WeatherHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new WeatherHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

            row.setTag(holder);
        }
        else
        {
            holder = (WeatherHolder)row.getTag();
        }

        Weather weather = data[position];
        holder.txtTitle.setText(weather.title);
        holder.imgIcon.setImageResource(weather.icon);

        return row;
    }

    static class WeatherHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
    }
}
在getView方法中,他为WeatherHolder创建对象这个WeatherHolder类是什么

它是如何创建的? 它是由我们手动创建的吗? 因为我在任何地方都找不到WeatherHolder的尸体 节目中的其他内容

我希望我的问题是清楚的。程序中的WeatherHolder是什么,是谁创建了WatchHolder类。

在滚动ListView findViewById的过程中,经常调用一行ListView的哪个布局的子级,这会降低性能。即使适配器返回一个膨胀视图进行循环,您仍然需要查找元素并更新它们。避免重复使用findViewById的一种方法是使用视图保持器设计模式

ViewHolder对象将每个零部件视图存储在布局的标记字段中,因此您无需重复查找即可立即访问它们。首先,您需要创建一个类来保存您的确切视图集

这是代码中的类

static class WeatherHolder {
        ImageView imgIcon;
        TextView txtTitle;
}
是的,它是由我们手动创建的 在getView中,您将创建该类的对象并访问它

更多信息


Wheatherholder类是在Wheateradapter类中声明的类,如果行尚未创建,或者已经创建,它将创建一个Wheatherholder;或者null他从当前行获取wheaterholder感谢您的回复。。。。你能给我详细介绍一下WeatherHolder类的用法吗?WheatherHolder用于初始化布局上的视图,通过这个类,你可以访问视图,并可以使用你拥有的数组设置像setText这样的字段,以获取数组的对象。有一个可变的位置
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        WeatherHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new WeatherHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

            row.setTag(holder);
        }
        else
        {
            holder = (WeatherHolder)row.getTag();
        }
//do ur staff
return row;
}