【问题标题】:Repeating Images in ListView...Loading Thumbnails from Videos在 ListView 中重复图像...从视频中加载缩略图
【发布时间】:2016-02-22 20:11:02
【问题描述】:

我正在尝试从 MediaStore 加载视频缩略图,但由于列表视图的转换/回收视图行为图像正在重复...滚动时不同位置的相同图像

这是我的适配器代码

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;
    }
}

无论如何我都可以解决这个问题...???? 早些时候,在从服务器下载图像时,我通过保留 Url、Async Drawable 和 Async 任务的周引用解决了这个问题,但是从存储加载时如何解决这个问题

【问题讨论】:

    标签: android listview bitmap mediastore


    【解决方案1】:

    请试试这个

    像这样改变 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;
    }
    

    并声明 View view=null;作为类级别变量。 希望能帮助到你。谢谢。参考这里。 https://androidruler.wordpress.com/2016/02/21/android-custom-listview-example/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2018-06-09
      • 1970-01-01
      相关资源
      最近更新 更多