2016-11-09 100 views
3

我正在使用RxBinding并在RecyclerView适配器中创建onBindViewHolder方法中的订阅,该方法重新使用项目。是否有任何简单的方法来检查我是否已将订阅者分配给EditText对象,并且如果删除了该订阅?RxJava/RxBinding - 检查订阅是否存在

我的代码看起来像这样

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

回答

3

反正是有检查,如果我已经分配给用户一个 的EditText对象,如果是删除订阅?

您可以将其保留为类成员。例如。

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) { 
       ... 
      } 
     }); 
} 
+0

在身边,是这个充满活力的订阅杂耍高效明智?并感谢您提供这个整洁干净的解决方案。 –

+1

*是这种动态订阅杂耍效率明智*它是。不用谢 – Blackbelt