You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用viewPagerAdapter.notifyDataSetChanged()后列表为空问题求助

排查viewPagerAdapter.notifyDataSetChanged()后列表为空的问题

以下是几个关键排查方向:

  • 确认数据源的引用与初始化
    检查textList是否在方法外正确初始化(比如val textList = mutableListOf<TextNoteModel>()),避免未初始化就调用clear()和add()。同时要保证viewPagerAdapter绑定的数据源就是这个textList,如果Adapter用了其他列表实例,刷新当前textList不会生效。

  • 验证传入的noteList数据
    调试时查看noteList的实际内容:

    • 如果noteList本身是空集合,执行clear()后没有新数据添加,列表自然为空
    • 检查GetTextNoteModel的name、notes等字段是否为null,若字段为空可能导致列表项显示空白,看起来像列表为空(而非数据源真的为空)
  • 检查Adapter的核心逻辑
    确认Adapter的getItemCount()是否返回textList.size,如果返回固定值或错误的长度,刷新后会显示异常。另外检查onBindViewHolder中是否正确绑定textList的数据,避免因绑定逻辑错误导致列表项不显示。

  • 排查生命周期时机问题
    如果updateTextNoteList在Fragment的view未创建完成时调用(比如onCreate阶段),此时viewPagerAdapter可能还未和ViewPager绑定,刷新操作无效。可以在调用前判断view != null,或者将刷新逻辑放在onViewCreated之后执行。

相关代码片段

val temp1:ArrayList<GetVoiceNoteModel> = arrayListOf()
                    it.data?.voiceNotes?.forEach {
                        temp1.add(GetVoiceNoteModel(id = it.id, userBoardId =  it.userBoardId,userJourneyId=it.userJourneyId,name=it.name))
                    }
                    (fragmentList[0] as NotesFragment).updateVoiceNoteList(temp1)
                   
                    mindFlowAdapterDetail.notifyDataSetChanged()


fun updateTextNoteList(noteList: ArrayList<GetTextNoteModel> = arrayListOf()) {
    textList.clear()

    for (i in noteList) {
        textList.add(
            TextNoteModel(
                title = i.name,
                subTitle = i.notes,
                noteDate = i.updatedAt.toString(),
                isExpand = false,
                noteId = i.id
            )
        )

    }
  
    viewPagerAdapter.notifyDataSetChanged()
}

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:05:01