urS*_*Sus 5 android android-recyclerview
我有一个ViewHolder订阅了 Rx Observable。现在我需要处理一次性用品,所以我这样做了,onViewRecycled()因为我读过它应该是为了释放资源,但是它永远不会被调用,甚至轮换也不被调用。这是预期的行为吗?
可能是因为我的项目很少,5 个由 3 个视图类型组成?onDetachedFromRecyclerView被调用,但我想在构造函数中订阅,而不是每次它回到屏幕/屏幕外时
public class FeedAdapter {
onCreateViewHolder ..
onBindViewHolder..
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
// THIS IS WHAT I HAVE NEVER SEEN GET CALLED
if (holder instanceof FeaturedBooksHolder) {
((FeaturedBooksHolder) holder).dispose();
}
}
static class FeaturedBooksHolder extends BooksHolder {
private final Disposable mDisposable;
FeaturedBooksHolder(View itemView, OnBookClickListener listener, AdapterClickListener headerClickListener, Observable<Tuple2<Boolean, NativeAdsManager>> observable) {
super(itemView, listener, headerClickListener);
mRecyclerView = findById(itemView, recyclerView);
BooksAdapter adapter = createAdapter(context, listener);
UiUtils.initHorizontalRecyclerView(context, mRecyclerView, adapter);
mDisposable = observable.subscribe(tuple -> {
adapter.setShowAds(tuple.getFirst());
adapter.setAdsManager(tuple.getSecond());
});
}
void bindTo(FeaturedBooksFeaturedItem item) {
super.bindTo(item);
mImageView.setImageURI(item.getImageUrl());
mSubtitleTextView.setText(item.getSubtitle());
}
void dispose() {
if (mDisposable != null) mDisposable.dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |