【发布时间】:2017-04-15 11:19:56
【问题描述】:
我使用RealmRecyclerViewAdapter 来保存Series 对象的集合,这些对象具有与之关联的图像。当我刷新 Series 数据(通过 API)时,适配器会按我的预期自动更新,但显示的图像已更改且不正确。通过我的测试,我注意到通过 RealmRecyclerViewAdapter 构造函数将 auto-update 设置为 false 会阻止这种行为,因此刷新列表项会导致这种情况发生。此外,如果我将auto-update 留给true,并在调用onBindViewHolder 期间设置断点,则图像仍然正确。运行不带断点的代码(全速)将导致显示不正确的图像。奇怪的是,只有图像在更新后显示不正确。任何文字仍然准确。
这是显示此行为的 GIF。如您所见,当我刷新数据时,行会更新并显示不正确的图像。
这是onBindViewHolder 的 sn-p,其中设置了行的图像:
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 的动画。如果没有,它将检查缓存版本是否可用。
【问题讨论】:
标签: android android-recyclerview realm realm-mobile-platform