3

我正在使用 RxBinding 并在 onBindViewHolder 方法中的 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);
}
4

1 回答 1

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) {
               ...
          }
      });
}
于 2016-11-09T09:33:18.347 回答