2015-04-04 74 views
2

TL,DR:我如何強制再循環視圖再次調用onBindViewHolder方法,至少對於可見項目?RecyclerView - 再次綁定視圖持有者

調用notifyDataSetChanged()將使列表滯後幾毫秒,有沒有更好的方法? 謝謝。

我有一個ImageView的佈局。 當爲圖像視圖調用綁定時,我會向服務器發送請求以獲取圖像。 加載圖像時,我將位圖保存在ViewHolder,T變量中。 而在綁定方法中,我檢查如果variable.getBitmap()是否爲null,如果是,我將設置imageview。 現在如果我滾動我的列表圖像將被加載,但如果沒有,圖像視圖仍然是空白的,因爲onBindViewHolder不會再次被調用。

謝謝。

+1

我不確定我是否正確地提出了問題,但是您正在尋找'notifyItemChanged(int)',它比'notifyDataSetChanged()'更精確? – AndroidEx 2015-04-04 22:10:03

回答

3

notifyDataSetChanged()絕對是正確的方法。也許notifyItemChanged()更好,因爲它只綁定選定的項目。如果我的問題得到解決,似乎你在主線上做了一些不應該在那裏完成的事情。切記:切勿在主線程上執行潛在的冗長操作,但始終使用類似AsyncTask的內容。

我認爲這是一個更好的方法來異步下載圖像,然後緩存它,所以你不必每次回收時都要下載它。有它的庫。

當圖像加載時,您可能會顯示一個ProgressBar或其他信號通知用戶的圖像正在加載。

+0

我也緩存圖像。謝謝。我在加載時將加載圖像設置爲imageview。 – 2015-04-05 10:22:10

相關問題