簡體   English   中英

Android:回收器視圖項目中的圖像在快速滾動時會隨機播放很多

[英]Android: Images in recycler view item shuffle a lot on scrolling fast

我的應用程序中有一個回收站視圖。 每個回收器視圖項都有一個 imageView。 我使用 asyncTask 加載位圖並將它們添加到磁盤緩存中,然后再將它們設置到 onPostExecute 中的圖像視圖中。

問題是,如果我快速滾動列表,在為該項目設置正確的圖像之前,我可以看到圖像混雜了很多。 我對這種行為的理解是,當我滾動列表時,回收者視圖項目內容將替換為新項目的內容。 但是由於圖像需要一些時間來加載這會導致混洗效果。

我的問題是有什么方法可以防止這種影響或至少將其最小化,以便很少發生改組?

編輯:我嘗試將圖像位圖設置為 null,但似乎沒有任何區別。

 @Override
    public void onBindViewHolder(DataObjectHolder holder, int position) {
        holder.title.setText(list.get(position).getTitle());
        holder.subTitle.setText(list.get(position).getSub());
        holder.image.setImageBitmap(null);
        loadBitmap(position, holder.image);
    }

在 onBindViewHolder() 中添加以下行;

holder.setIsRecyclable(false);

您不應該使用 asyncTask 在回收站視圖中加載多個位圖。 您可以選擇創建自己的 ThreadPool 或使用像 Picasso 或 Glide 這樣的 3rd 方庫。 AsyncTask 會嘗試將位圖加載到您引用的列表項中,但是因為您滾動得太快,所以一切都搞砸了。

使用 3rd 方庫,如 Universal Image Loader(UIL) 或 Picasso 或 Glide。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM