class RecommendPresenter(val viewModel: HomeViewModel) : Presenter() {
override fun onCreateViewHolder(parent: ViewGroup?): ViewHolder {
val context = parent?.context
val view = BaseColumnItemView(context!!)
return ViewHolder(view)
}
private var map = mutableMapOf<ViewHolder, Boolean>()
override fun onBindViewHolder(viewHolder: ViewHolder, itemData: Any?) {
map.put(viewHolder, true)
if (itemData is VideoCategoryItem) {
viewModel.triggerLoadRecommend(itemData.conditions)
.subscribeOn(TScheduler.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : ApiObserver<ArrayList<RecommendVideoResponse>>() {
override fun onFailed(code: Int, msg: String?) {
}
override fun onSuccess(t: ArrayList<RecommendVideoResponse>) {
if (map.get(viewHolder)!!){
//update ui
}
}
})
} else {
LOG.e("HeroBannerPresenter", "item is not VideoCategoryItem")
}
}
override fun onUnbindViewHolder(viewHolder: ViewHolder) {
map.put(viewHolder, false)
}
this is my code, I want to update ui when get the onSuccess callback,but it failed
- Q1: before I add the viewHolder cache,it would crash.
- Q2: after I add viewholder cache,no crash happend,but it would always scroll up to top.anyone knows how to fix it?