我们正在使用自定义ListViewAdapter
在我们的Android应用程序中构建一个列表。ListView
中的每一行都有一个按钮。我们还使用自定义Observable<Object>
类作为我们的可观察对象。
在ListViewAdapter
中,在getView(...)
方法中,我正在为给定行的按钮创建观察器,然后将该观察器添加到适配器中的PublishSubject
。
我陷入困境的地方是,当列表滚动并且视图开始被回收时:
- 如何从
PublishSubject
中删除给定行的按钮观察器 - 如何跟踪给定行的按钮是否已添加到
PublishSubject
? - 我还需要在这里说明什么?
当您的项目视图附加/分离时,您需要订阅/取消订阅您的可观察量,例如从RecyclerView
ViewHolder
class MyViewHolder extends RecyclerView.ViewHolder
implements View.OnAttachStateChangeListener
{
private Disposable mDisposable;
MyViewHolder ( View itemView )
{
super( itemView );
itemView.addOnAttachStateChangeListener( this );
}
@Override
public void onViewAttachedToWindow( View v )
{
if( mDisposable != null )
mDisposable.dispose( );
mDisposable = myObservable.subscribe();
@Override
public void onViewDetachedFromWindow( View v )
{
if( mDisposable != null )
mDisposable.dispose( );
}
}