1
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?
Cupid Chow
  • 11
  • 1

0 Answers0