Android ListView 中的 RxJava - 如何跟踪每一行的可观察量?



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

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

我陷入困境的地方是,当列表滚动并且视图开始被回收时:

  • 如何从PublishSubject中删除给定行的按钮观察器
  • 如何跟踪给定行的按钮是否已添加到PublishSubject
  • 我还需要在这里说明什么?

当您的项目视图附加/分离时,您需要订阅/取消订阅您的可观察量,例如从RecyclerViewViewHolder

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( );
}
}

最新更新