2012-02-05 1 views
1

У меня есть селектор файлов (который работает по мере необходимости), но я хотел бы добавить миниатюры в список, если это необходимо. Он работает достаточно хорошо для первых нескольких изображений, но затем случайных файлов (и папок), которые не являются изображениями, и не должны иметь миниатюры для загрузки случайных изображений, которые уже загружены. Весь список файлов в конечном итоге принимает изображение после повторной прокрутки.Отображение списка в Android-формате показывается случайным образом

Это известная проблема со списками? Есть ли стандартный способ показа эскизов? Мой код просто сломан?

Ниже приведен код, который присваивает имена файлов и миниатюры каждому элементу списка - класс расширяет ArrayAdapter.

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    View v = convertView; 
    if (v == null) 
    { 
     LayoutInflater vi = (LayoutInflater) c 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(id, null); 
    } 
    final Option o = items.get(position); 
    if (o != null) 
    { 
     TextView t1 = (TextView) v.findViewById(R.id.TextView01); 
     TextView t2 = (TextView) v.findViewById(R.id.TextView02); 
     ImageView img1 = (ImageView) v.findViewById(R.id.imageView1); 
     try 
     { 
      if(o.getData()!="Folder" && (o.getPath().contains(".jpg") || o.getPath().contains(".gif") || o.getPath().contains(".png"))) 
       img1.setImageBitmap(getPreview(o.getPath())); 
     } 
     catch (Exception e) 
     { 
      Log.w("Image failed in File Viewer", e); 
     } 
     if (t1 != null) 
      t1.setText(o.getName()); 
     if (t2 != null) 
      t2.setText(o.getData()); 

    } 
    return v; 
} 

ответ

3

Проблема в том, что вы повторно используете свои взгляды (что является правильным способом). Поэтому, когда вы начинаете прокрутку, он будет повторно использовать представления, которые были отображены ранее. Поэтому все, что вам нужно сделать, это сбросить изображение/тексты в ваших представлениях, когда вы их не устанавливаете.