1

レイアウトには、ImageView といくつかの TextView ウィジェットと共にギャラリーがあります。残念ながら、低速の電話ではギャラリーのスクロール パフォーマンスが低下します。ImageView と TextView を含む LinearLayout から背景画像を削除すると、問題はなくなります。ビュー全体の onDraw() をオーバーライドし、クリップ rect をチェックしました。これは常に画面全体です。ギャラリーをスクロールするたびに(無効化されると)、画面全体が無効化されるようです。ギャラリー ウィジェットのみをスクロールするときに全画面再描画を回避する方法はありますか?

ありがとう

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

おそらく、Adapters と ConvertView のチュートリアルを参照する必要があります。

于 2011-05-30T10:04:48.763 に答える