Autore Topic: Scroll list view troppo lenta  (Letto 642 volte)

Offline terenz84

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
Scroll list view troppo lenta
« il: 08 Febbraio 2011, 09:15:23 CET »
0
Salve

Ho una listview con un'anteprima di un immagine, una text box e un button.
Realizzata tramite un custom adapter.
Il problema è che, su un device vero lo scrolling è veramente molto lento.

Vi posto il codice del mio Adapter.

Cosa c'è di strano?

Codice (Java): [Seleziona]
public class ImageListAdapter extends BaseAdapter implements Filterable {
        private List<Image> imagelist;
    private LayoutInflater mInflater;
    private Bitmap image;
    private Context context;


    public ImageListAdapter(Context context, List<Image> imageList) {
      mInflater = LayoutInflater.from(context);
      this.context = context;
      this.imagelist = imageList;
    }
   
    public void updateImageList(List<Image> iL){
        this.imagelist = iL;
    }
   
    public View getView(final int position, View convertView, ViewGroup parent) {
      final ViewHolder  holder;

      if(convertView == null) {
        convertView = mInflater.inflate(R.layout.picturelist_item, null);

        holder = new ViewHolder();
        holder.iconLine = (ImageView) convertView.findViewById(R.id.iconLine);
        holder.textLine = (TextView) convertView.findViewById(R.id.textLine);
        holder.buttonLine = (Button) convertView.findViewById(R.id.buttonLine);
       
        if(imagelist.get(position).Upload){
                holder.buttonLine.setText("Upload");
        }
        else{
                holder.buttonLine.setClickable(false);
                holder.buttonLine.setEnabled(false);
                holder.buttonLine.setText("Uploaded");         
        }
       
        //icon click handler to go in detail page
        convertView.setOnClickListener(new OnClickListener() {
          private int pos = position;

          @Override
          public void onClick(View v) {
                Intent intent = new Intent(v.getContext(), PictureDetail.class);
                String pkg = context.getPackageName();
                intent.putExtra(pkg+".imagePath", imagelist.get(pos).AbsolutePath);
            context.startActivity(intent);
          }
        });
       
       
       
        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }
     
      //optimize memory
      File file = new File(imagelist.get(position).AbsolutePath);
      image = Util.decodeFile(file);
     
      holder.iconLine.setImageBitmap(image);

      String size = "(" + Float.toString(Util.bytesToMeg(imagelist.get(position).Size)) + " Mb)";
      String text = size + " " + imagelist.get(position).UploadDate;
      holder.textLine.setText(text);
      return convertView;
    }

    static class ViewHolder {
      ImageView iconLine;
      Button buttonLine;
      TextView textLine;
    }
   
    @Override
    public Filter getFilter() {
      return null;
    }

    @Override
    public long getItemId(int position) {
      return 0;
    }

    @Override
    public int getCount() {
      return imagelist.size();
    }

    @Override
    public Object getItem(int position) {
                return null;
    }

  }