0
我正在使用RealmRecyclerViewAdapter
來保存Series
對象的集合,這些對象具有與它們關聯的圖像。當我刷新Series
數據(通過API)時,適配器自動更新,如我所料,但顯示的圖像更改並且不正確。通過我的測試,我發現通過RealmRecyclerViewAdapter
構造函數將自動更新設置爲false可以停止這種行爲,因此刷新列表項會導致這種情況發生。另外如果我離開auto-update
到true
,並且我在onBindViewHolder
的調用中設置了一個斷點,圖像仍然是正確的。無斷點運行代碼(全速)將導致顯示不正確的圖像。奇怪的是,只有在更新後圖像不正確顯示。任何文字仍然準確。自動更新RealmRecyclerViewAdapter在更新上顯示不正確的數據
這是顯示此行爲的GIF。正如你所看到的,當我刷新數據時,行被更新並顯示不正確的圖像。
這裏是onBindViewHolder
一個片段,其中該行的圖像設置:
public void onBindViewHolder(ViewHolder holder, int position) {
final int adapterPosition = holder.getAdapterPosition();
holder.series = getItem(adapterPosition);
final String MALID = holder.series.getMALID();
...
int imageId = App.getInstance().getResources().getIdentifier("malid_" + holder.series.getMALID(), "drawable", "<app-package>");
if (imageId != 0) {
Picasso.with(App.getInstance()).load(imageId).fit().centerCrop().into(holder.mPoster);
} else {
File cacheDirectory = App.getInstance().getCacheDir();
File bitmapFile = new File(cacheDirectory, holder.series.getMALID() + ".jpg");
Picasso.with(App.getInstance()).load(bitmapFile).placeholder(R.drawable.placeholder).fit().centerCrop().into(holder.mPoster);
}
holder.mAddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addSeriesHelper(MALID);
}
});
holder.mMinusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RemoveSeriesDialogFragment dialogFragment = RemoveSeriesDialogFragment.newInstance(self, MALID, adapterPosition);
dialogFragment.show(seriesFragment.getMainActivity().getFragmentManager(), TAG);
}
});
}
我第一次檢查應用程序資源,如果它包含了Series
動漫。如果沒有,它將檢查緩存版本是否可用。