2016-02-22 83 views
0

我想從MediaStore加載視頻縮略圖,但由於列表視圖的轉換/回收視圖行爲圖像正在重複...在滾動上的不同位置上的相同圖像在ListView中重複圖像...從視頻加載縮略圖

這是我的適配器代碼

public class VideoListAdapter extends BaseAdapter { 

    private ArrayList<VideoDetails> mVideosList; 
    private Context mContext; 
    private LayoutInflater mLayoutInflater; 
    ContentResolver crThumb; 
    private float mSize; 

    BitmapFactory.Options options=new BitmapFactory.Options(); 


    public VideoListAdapter(ArrayList<VideoDetails> mVideosList, Context mContext) { 
     this.mVideosList = mVideosList; 
     this.mContext = mContext; 
     mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     options.inSampleSize = 1; 
     crThumb = mContext.getContentResolver(); 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return mVideosList.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if(convertView == null) 
     { 
      holder = new ViewHolder(); 
      convertView = mLayoutInflater.inflate(R.layout.video_row_layout,null,false); 
      holder.mVideoTitleTextView = (TextView) convertView.findViewById(R.id.VideoTitleTextView); 
      holder.mVideoSizeTextView = (TextView) convertView.findViewById(R.id.videoSizeTextView); 
      holder.mVideoThumbImage = (ImageView) convertView.findViewById(R.id.videoThumbImageView); 
      convertView.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.mVideoTitleTextView.setText(mVideosList.get(position).getTitle()); 
     mSize = Float.parseFloat(mVideosList.get(position).getVideoSize()); 
     holder.mVideoSizeTextView.setText(" Size(MB):"+mSize/1024*1024); 
     Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, mVideosList.get(position).getVideoId(), MediaStore.Video.Thumbnails.MICRO_KIND, options); 
     holder.mVideoThumbImage.setImageBitmap(curThumb); 
     return convertView; 
    } 

    private static class ViewHolder 
    { 
     TextView mVideoTitleTextView; 
     TextView mVideoSizeTextView; 
     ImageView mVideoThumbImage; 
    } 
} 

無論如何,我可以解決這個問題????? 從服務器早些時候在下載圖像我解決了這個問題通過保持網址,異步繪製對象和異步任務的周參考但從存儲加載如何來解決這個問題

回答

2

時,請嘗試這個

變化getView喜歡這種方法。

public View getView(int position, View convertView, ViewGroup parent) { 
    view=convertView; 
    ViewHolder holder; 
    if(convertView == null) 
    { 
     holder = new ViewHolder(); 
     view = mLayoutInflater.inflate(R.layout.video_row_layout,null,false); 
     holder.mVideoTitleTextView = (TextView) convertView.findViewById(R.id.VideoTitleTextView); 
     holder.mVideoSizeTextView = (TextView) convertView.findViewById(R.id.videoSizeTextView); 
     holder.mVideoThumbImage = (ImageView) convertView.findViewById(R.id.videoThumbImageView); 
     convertView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.mVideoTitleTextView.setText(mVideosList.get(position).getTitle()); 
    mSize = Float.parseFloat(mVideosList.get(position).getVideoSize()); 
    holder.mVideoSizeTextView.setText(" Size(MB):"+mSize/1024*1024); 
    Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, mVideosList.get(position).getVideoId(), MediaStore.Video.Thumbnails.MICRO_KIND, options); 
    holder.mVideoThumbImage.setImageBitmap(curThumb); 
    return view; 
} 

And Declare View view = null;作爲類級變量。 希望它有幫助。謝謝。請參閱此處。 https://androidruler.wordpress.com/2016/02/21/android-custom-listview-example/

相關問題