1

我的布局中有一个 Gallery 以及一个 ImageView 和一些 TextView 小部件。不幸的是,我在慢速手机上的画廊滚动性能很低。当我从包含 ImageView 和 TextView 的 LinearLayout 中删除背景图像时,问题就消失了。我覆盖了整个视图的 onDraw() 并检查了剪辑矩形 - 它始终是整个屏幕。看起来每次我滚动图库(并且它已失效)时,整个屏幕都会失效。当我只滚动图库小部件时,有什么方法可以避免全屏重绘?

谢谢

private class GalleryAdapter extends ArrayAdapter<WeatherDisplayInfo> {

    LayoutInflater mInflater;
    Context mContext;

    public GalleryAdapter(Context context) {
        super(context, R.layout.gallery_item_view, mForecastData);

        mContext = context;
        mInflater = LayoutInflater.from(context);

    }

    public int getCount() {
        return mForecastData.size();
    }

    public WeatherDisplayInfo getItem(int position) {
        return mForecastData.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    private class ViewHolder {

        public TextView text_date;
        public TextView text_forecast;
        public TextView text_temperature;

        public TextView text_pressure;
        public TextView text_humidity;
        public TextView text_windspeed;

        public ImageView weather_image;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;


        if(convertView == null) {

            if(position == getCount() - 1) {

                convertView = mInflater.inflate(R.layout.logo_view, null);

                holder = new ViewHolder();

                // store view holder
                convertView.setTag(holder);

            } else {

                convertView = mInflater.inflate(R.layout.gallery_item_view, null);

                holder = new ViewHolder();

                holder.text_date = (TextView) convertView.findViewById(R.id.text_date);
                holder.text_forecast = (TextView) convertView.findViewById(R.id.text_desc);
                holder.text_temperature = (TextView) convertView.findViewById(R.id.text_temp);

                holder.text_pressure = (TextView) convertView.findViewById(R.id.text_pressure);
                holder.text_humidity = (TextView) convertView.findViewById(R.id.text_humidity);
                holder.text_windspeed = (TextView) convertView.findViewById(R.id.text_wind);

                holder.weather_image = (ImageView) convertView.findViewById(R.id.image_weather_view);;

                // store view holder
                convertView.setTag(holder);             

                convertView.setDrawingCacheEnabled(true);
                convertView.buildDrawingCache();

            }                               

        } else {

            holder = (ViewHolder) convertView.getTag();

        }

        // set view data

        return convertView;
    }
4

1 回答 1

0

您可能应该查看适配器和 ConvertView 的教程。

于 2011-05-30T10:04:48.763 回答