ListViewAdapter图片加载

时间:2011-12-24 09:17:26

标签: android image listview adapter

我有一个带自定义适配器的列表视图。 每个listview项都有一个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 个答案:

答案 0 :(得分:1)

我建议你研究一下你的ImageLoader:

希望这篇文章能指出你的方向: Android: Help in adapting ListView adapter with an ImageLoader Class