Загрузка изображения ListViewAdapter - PullRequest
1 голос
/ 24 декабря 2011

У меня есть список с пользовательским адаптером.Каждый элемент списка имеет ImageView.ImageView берется из камеры или галереи и может быть изменен.

У меня есть этот код в адаптере:

@Override
    public View getView(    int         position, 
                            View        convertView, 
                            ViewGroup   parent ) 
    {
          ViewHolder    holder = new ViewHolder();

          if (convertView == null) 
          {
              convertView = mInflater.inflate(R.layout.instruction_list_view_entry, null);
              holder.instructionIndex   = (TextView) convertView.findViewById( R.id.listUp_InstructionNumberTextBoxId );
              holder.instructionText    = (TextView) convertView.findViewById( R.id.listUp_InstructioTextTextBoxId );
              holder.instructionImage   = (ImageView)convertView.findViewById( R.id.listUp_InstructionImageViewId );

              holder.instructionIndex.setTypeface(  MyApp.Fonts.ERAS_BOLD );
              holder.instructionIndex.setTextSize(  MyApp.Fonts.INSTRUCTION_ID_TEXT_SIZE );

              holder.instructionText.setTypeface(  MyApp.Fonts.ARIAL );
              holder.instructionText.setTextSize(  MyApp.Fonts.RUNNING_TEXT_SIZE );
              holder.instructionText.setTextColor( Color.BLACK );
          }
          else
          {
              holder = (ViewHolder) convertView.getTag();
          }

          if( super.getItem(position) != null )
          {
              holder.instructionIndex.setText( Integer.toString(getItem(position).getIndex() ) );

              holder.instructionText.setText( getItem(position).getText() );

              if( getItem( position ).GetImageUploadItem().isValid() )
              {
                  mImageLoader.DisplayImage(    getItem( position ).GetInstructionImageLocation(), 
                                                getItem( position ).IsUsingLocalPictures(),
                                                mContext, 
                                                holder.instructionImage );

                  holder.instructionImage.setVisibility( View.VISIBLE );
              }
              else
              {
                  holder.instructionImage.setVisibility( View.GONE );
              }

              convertView.setTag(holder);
          } 

          return convertView;
    }

    @Override
    public boolean isEnabled(int position) 
    {
        return mCanBeEnabled;
    }

    static class ViewHolder 
    {
          TextView  instructionIndex;
          TextView  instructionText;
          ImageView instructionImage;
    }

ImageLoader - это класс, который загружает изображения изфайл.

Проблема, которую я вижу, состоит в том, что при наличии нескольких строк с изображениями прокрутка не является хорошей, не плавной.

Я обнаружил, что ImageLoading создается все время.Как я могу это исправить?Обратите внимание, что изображение может быть изменено, а затем необходимо перезагрузить.Может быть, если я добавлю данные в адаптер, флаг изображения изменится и загрузится только его?

Есть еще идеи?

1 Ответ

1 голос
/ 24 декабря 2011

Я бы посоветовал вам изучить Кэширование вашего ImageLoader:

Надеюсь, этот пост укажет вам следующее направление: Android: помощь в адаптации адаптера ListView с классом ImageLoader

...