Closed geoffreylzf closed 5 years ago
Hi guys, I faced some problem when implement rxbinding into my recycleview code.
private val clickSubject = PublishSubject.create<Company>() val clickEvent: Observable<Company> = clickSubject
override fun onBindViewHolder(holder: CompanyViewHolder, position: Int) { companyList[position].let { company -> holder.itemView.run { li_tv_company_code.text = company.companyCode li_tv_company_name.text = company.companyName setOnClickListener { clickSubject.onNext(companyList[position]) clickSubject.onComplete() } } } }
The above code executed properly and my Observable on fragment is able to trigger onNext() and onCompleted()
After I implemented RxBinding
override fun onBindViewHolder(holder: CompanyViewHolder, position: Int) { companyList[position].let { company -> holder.itemView.apply { clicks().map { companyList[position] }.subscribe(clickSubject) }.run { li_tv_company_code.text = company.companyCode li_tv_company_name.text = company.companyName } } }
The above code executed properly, but my Observable on fragment is only able to trigger onNext() and onComplete() is ignore
Thank for any advice in advance.
Listener streams created by the library are infinite. If you only want a single item before an "on complete" event, add a take(1) operator.
take(1)
Hi guys, I faced some problem when implement rxbinding into my recycleview code.
The above code executed properly and my Observable on fragment is able to trigger onNext() and onCompleted()
After I implemented RxBinding
The above code executed properly, but my Observable on fragment is only able to trigger onNext() and onComplete() is ignore
Thank for any advice in advance.