Android ListView 中的 RxJava - 如何跟踪每一行的 Observable?

RxJava within Android ListView - How to Track Observables for Each Row?

我们正在使用自定义 ListViewAdapter 在我们的 Android 应用程序中构建列表。 ListView 中的每一行都有一个按钮。我们还使用自定义 Observable<Object> class 作为我们的可观察对象。

ListViewAdapter 中,在 getView(...) 方法中,我为给定行的按钮创建观察者,然后将该观察者添加到适配器中的 PublishSubject

我卡住的地方是当滚动列表并且视图开始回收时:

当您的项目视图为 attach/detach 时,您需要 subscribe/unsubscribe 到您的可观察对象,示例来自 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( );
    }
}