请选择 进入手机版 | 继续访问电脑版

Pagging3

[复制链接]
阿峻 发表于 2021-1-1 18:31:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
  1.     def paging_version = "3.0.0-alpha03"    implementation "androidx.paging:paging-runtime:$paging_version"    def lifecycle_version = "2.2.0"    implementation 'com.amitshekhar.android:android-networking:1.0.2'    // ViewModel    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
复制代码
 
  1. compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }    dataBinding {        enabled = true    }
复制代码
  1. import android.database.DatabaseUtilsimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport androidx.databinding.DataBindingUtilimport androidx.databinding.ViewDataBindingimport androidx.paging.PagingDataAdapterimport androidx.recyclerview.widget.DiffUtilimport androidx.recyclerview.widget.RecyclerViewimport com.nas.mypaging.Rimport com.nas.mypaging.paging.MyAdapter/** * 公司:江苏再出发网络科技有限公司 * 作者:Android 倪震宇 * 创建时间:2020/12/31 * 功能形貌: */abstract class BasePagingAdapterV3(var diffCallback: DiffUtil.ItemCallback) :    PagingDataAdapter(diffCallback) {    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<B> {        val view =            LayoutInflater.from(parent.context).inflate(getItemLayout(), parent, false)        return BaseViewHolder(view)    }    abstract fun getItemLayout(): Int    class BaseViewHolder<B : ViewDataBinding>(itemView: View) :        RecyclerView.ViewHolder(itemView) {        val mBinding by lazy { DataBindingUtil.bind<B>(itemView) }    }}
复制代码
  1. import android.util.Logimport androidx.paging.PagingSourceimport com.nas.mypaging.paging.DataModelimport kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.withContext/** * 公司:江苏再出发网络科技有限公司 * 作者:Android 倪震宇 * 创建时间:2020/12/31 * 功能形貌: */abstract class BasePagingDataSourceV3 : PagingSource() {    override suspend fun load(params: LoadParams): LoadResult {        val page = if (params.key == null) {            0        } else {            params.key        }        val data = dataEngin(page!!)        return LoadResult.Page(            data = data,            prevKey = null,            nextKey = if (data.size == 0) null else page + 1        )    }    abstract suspend fun getData(page: Int): List    private suspend fun dataEngin(page: Int): List {        return withContext(Dispatchers.IO) {            getData(page)        }    }}
复制代码
 

来源:https://blog.csdn.net/sinat_40387150/article/details/112008191
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )