RxJava / RxBinding - 检查订阅是否存在

时间:2016-11-09 09:29:35

标签: android android-recyclerview rx-java rx-binding

我在onBindViewHolder方法中使用RxBinding并在RecyclerView适配器中创建订阅,该方法重用了项目。有没有简单的方法来检查我是否已经将订阅者分配给EditText对象,如果是,则删除该订阅?

我的代码看起来像这样

public void onBindViewHolder(final ItemViewHolder holder, int position) {

    holder.text.setText(mProvider.get(position).text);
    Subscription textSub = RxTextView.textChanges(holder.text).subscribe(new Action1<CharSequence>() {
        @Override
        public void call(CharSequence charSequence) {
            ...
        }
    });
    subscriptions.add(textSub);
}

1 个答案:

答案 0 :(得分:3)

  

无论如何都要检查我是否已经分配了订阅者   EditText对象,如果是,删除该订阅?

你可以把它作为班级成员。 E.g。

Subscription textSub = Subscriptions.unsubscribed(); 

然后

public void onBindViewHolder(final ItemViewHolder holder, final int position) {

     holder.text.setText(mProvider.get(position).text);
     textSub.unsubscribe();
     textSub = RxTextView.textChanges(holder.text).subscribe(new Action1<CharSequence>() {
          @Override
          public void call(CharSequence charSequence) {
               ...
          }
      });
}