- 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"
复制代码
- compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } dataBinding { enabled = true }
复制代码- 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) } }}
复制代码- 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |