滚动到最后一个位置时如何将项目添加到PagingListAdpter中

凤凰育肥

当用户滚动到最后一个位置时,如何添加也具有不同ViewType的新项目并将其显示在recyclerView上?

在此处输入图片说明

我已经从loadInitial和loadAfter获取数据。但是我想知道当API向我发送最后一个项目时如何添加新项目吗?

对于示例API,发送数据大小为50,并且当用户滚动到位置49时,我需要向适配器添加另一个是我的自定义ViewType,大小将为51位置50

弗里曼

这是我的代码,它将为您服务

class FollowFeedPagedListAdapter(val context: Context, val itemClicked: (FollowFeedModel) -> Unit) : PagedListAdapter<FollowFeedModel, RecyclerView.ViewHolder>(DIFF_COMPARATOR) {


val TYPE_NORMAL = 1
val TYPE_LAST_POSITION = 2

companion object {
    private val DIFF_COMPARATOR = object : DiffUtil.ItemCallback<FollowFeedModel>() {
        override fun areItemsTheSame(oldItem: FollowFeedModel, newItem: FollowFeedModel): Boolean {
            return oldItem == newItem
        }

        override fun areContentsTheSame(oldItem: FollowFeedModel, newItem: FollowFeedModel): Boolean {
            return oldItem.id == newItem.id
        }
    }

    private var hasMore: Boolean = true

    @JvmStatic
    fun getHasMoreInstance() = hasMore

    @JvmStatic
    fun setHasMoreInstance(boolean: Boolean) {
        hasMore = boolean

    }
}

override fun getItemCount(): Int {
    val size = super.getItemCount()
    //เพิ่มอันสุดท้าย
    return size+1
}

override fun getItemViewType(position: Int): Int {
    if (position == itemCount - 1) {
        return TYPE_LAST_POSITION
    } else {
        return TYPE_NORMAL
    }
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    when (viewType) {
        TYPE_NORMAL -> {
            val view = LayoutInflater.from(context).inflate(R.layout.row_summaries_layout_version2, parent, false)
            return SummariesModelViewHolder(view, itemClicked)
        }
        TYPE_LAST_POSITION -> {
            val view = LayoutInflater.from(context).inflate(R.layout.layout_no_more_follow_feed, parent, false)
            return NoMoreFollowFeedViewHolder(view)
        }
        else -> {
            val view = LayoutInflater.from(context).inflate(R.layout.layout_no_more_follow_feed, parent, false)
            return SummariesModelViewHolder(view, itemClicked)
        }
    }
}


override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

    when (holder.itemViewType) {
        TYPE_NORMAL -> {
            val holder = holder as SummariesModelViewHolder
            holder.binding(getItem(position))
        }
        TYPE_LAST_POSITION -> {
            val holder = holder as NoMoreFollowFeedViewHolder
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数组中的项目移到最后一个位置

滚动到另一个元素时尝试将class添加到元素

如何在Appium中滑动和滚动到最后一个

将ArrayList元素移动到列表中的最后一个位置?

如何将零轴移动到python中的最后一个位置?

选中复选框后如何将项目移动到最后一个位置?(RecyclerView,ViewHolder)

如何将ItemSeparatorComponent添加到FlatList的最后一个项目

我有一个循环,想用ajax将类添加到最后4个元素中

Chrome-将元素添加到* ngFor视图时,始终向下滚动到最后一个元素

JS-如何将JSON对象的项目移动到另一个位置

emacs:滚动/向上/向下滚动后如何返回到最后一个位置?

将字符添加到字符串的最后一个位置

如何在循环中将类添加到最后一个帖子的最后一个图像中[Wordpress]

仅将数据标签添加到最后一个值

如何使UITableViewCell坚持到最后一个位置

如何将除法剩余的食物添加到最后一个列表?

如何使用simple_fields_for将链接仅添加到最后一个数据

RecycleView不会滚动到最后一个项目

将CSS添加到最后一个元素

如何将 JSON 对象的第一个元素移动到最后?

如何将减号从字符串中的最后一个位置交换到配置单元中的第一个位置?

FFmpeg 仅将文本添加到最后一个图像

如何让 RecyclerView 滚动到 onCreate 中的最后一个位置?

Android:回收站视图没有滚动到最后一个位置

如何将多个 QStringLists 中的项目添加到一个?

屏幕尺寸增加时如何自动滚动到最后一个元素

将 DOM 元素的第一个子元素移动到最后一个位置而不创建垃圾节点

如何将新字段添加到 MongoDB 数组中的最后一个对象?

如何将类添加到 Wordpress 导航栏中的最后一个 <li>?