在AndroidStudio中添加模板代码使用快捷键快速生成代码,提高我们的开发效率
如下图示例,我们定义了ral作为模板代码的快捷缩写,在类中输入ral就可以根据编译器提示自动生成分页加载的模板代码

 比如分页加载的模板代码:

 private var cursor = 0
 
 val itemBinding = ItemBinding.of<XXXItemViewModel>(BR.viewModel, R.layout.item_xxx)

    val itemBinding2: OnItemBind<ItemViewModel<*>> = OnItemBind { itemBinding, _, item ->
        when (item) {
            is XXXItemViewModel -> {
                itemBinding.set(BR.viewModel, R.layout.item_xxx)
            }

            else -> {
                itemBinding.set(BR.viewModel, R.layout.item_xxx)
            }
        }
    }

    val items = ObservableArrayList<ItemViewModel<*>>()

    val cmdRefresh = BindingCommand<RefreshLayout>(BindingConsumer {
        queryListData(it, true)
    })

    val cmdLoadMore = BindingCommand<RefreshLayout>(BindingConsumer {
        queryListData(it, false)
    })

    fun queryListData(refreshLayout: RefreshLayout?, isRefresh: Boolean = false) {
        cursor = if (isRefresh) {
            0
        } else {
            if (items.size > 0) {
                items[items.size - 1]?.liveItemBean?.real_stime_tamp ?: 0
            } else {
                0
            }
        }

        repository.queryDataList(
            provider = lifecycleProvider,
            callback = object : ApiCallback<ClassifyLiveListBean>() {
                override fun onNext(bean: ClassifyLiveListBean?) {
                    if (isRefresh) items.clear()
                    bean?.list?.forEach {
                        items.add(XXXItemViewModel(it))
                    }

                    if ((bean?.list?.size ?: 0) < BASE_PAGE_SIZE) {
                        if (isRefresh) {
                            refreshLayout?.finishRefreshWithNoMoreData()
                        } else {
                            refreshLayout?.finishLoadMoreWithNoMoreData()
                        }
                    } else {
                        if (isRefresh) {
                            refreshLayout?.finishRefresh()
                        } else {
                            refreshLayout?.finishLoadMore()
                        }
                    }
                }

                override fun onError(e: ApiException?) {
                    super.onError(e)
                    if (isRefresh) {
                        refreshLayout?.finishRefresh()
                    } else {
                        refreshLayout?.finishLoadMore()
                    }
                }
            })
    }

 

posted on 2023-08-29 21:30  毕哥  阅读(17)  评论(0编辑  收藏  举报