问题标签 [notifyitemchanged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
131 浏览

android - 为什么我可以在数据更改之前在 onResume() 中调用 notifyItemChanged()?

当我从详细信息活动返回时,要从最后选择的 RecyclerView 项目中删除突出显示的背景颜色,我尝试了以下操作onResume()

这在onBindViewHolder()


onBindViewHolder()总是在之后调用,onResume()所以selectedPos == position给出了正确的结果,但我不明白为什么不早点调用它。

为什么我不必保存selectedPos在临时变量中并notifyItemChanged(temp)在更改后调用selectedPos

提前致谢。

0 投票
1 回答
545 浏览

android - 有没有人在 Kotlin 中使用 notifyDataSetChanged() ?

我有一个显示从modSamplePhrasesRecyclerView读取的短语列表。当一个项目被点击时,会弹出一个显示列表项目中的短语并允许对其进行编辑的窗口。编辑完成后,通过函数将新文本返回给。Logcat 显示底层数据更新成功(所以没有区别),但仍然调用或根本不执行任何操作。MutableList DialogFragmentRecyclerFragmentgetDataFromDialog().clear().addAll()notifyItemChanged(pos)notifyDataSetChanged()

我尝试在修改数据后重新创建适配器

我还尝试获取RecyclerView对它的引用并重置适配器

但还是一无所获。

PhraseListAdapter代码:

0 投票
0 回答
209 浏览

android - 带有 ViewBinding 的 Android RecyclerView - notifyItemChanged 仅在第一次工作

因此,我使用 ViewDataBinding 设置了 RecyclerView,并在单击项目内的按钮时显示 ProgressBar。ProgressBar 显示并弹出一个对话框,在取消对话框时我可以 notifyItemChanged 隐藏 ProgressBar,它只在第一次工作。

这是我的项目布局:

下面是 ViewHolder 的样子:

如您所见,我已经在布局本身内创建了一个变量来切换 inProgress 布尔值,它可以完美地工作,除非在第二次调用 notifyItemChanged 时不会自行重置。

我目睹的另一个奇怪的行为是,有时我单击一个项目内的按钮,它会在该 itemViewType 的所有视图中显示进度条。

PSOn 调用 notifyItemChanged 时,视图会像收到更改通知一样进行动画处理,但仅在第一次生效。

谢谢

0 投票
1 回答
130 浏览

java - 如何从另一个活动(按钮)JAVA更新recyclerview

我正在构建一个笔记应用程序并卡在我想在按下按钮后从另一个活动更新我的 StaggeredRecycleView 的阶段。由于某种原因,我无法使用更新 recycleviewadapter 的不同选项。感谢您的时间!

这是 RecViewAdapter

这是 MainActivity

这是我按下按钮“正确功能”后要更新的活动

0 投票
0 回答
32 浏览

android - 单选按钮项目未在 RecyclerView 中重置

之前有人问过这个问题,但这些解决方案并没有帮助我。我有一个可滚动的 RecyclerView,并且在任何时候都只能在屏幕上部分显示。它包含一个 RadioButtons 列表和一些与每个项目相关的文本。当您单击 RadioButton 时,在此之前选择的最后一个按钮应该关闭。它不是。您单击的每个按钮都会被选中,而您之前选择的其他按钮也会保持选中状态。

它是这样设置的:

回收站长这样:

适配器的代码如下所示。

谁能告诉我我做错了什么?

0 投票
1 回答
87 浏览

android - Android Studio Kotlin,notifyItemChanged 没有调用 OnBindViewHolder

我正在尝试使用 kotlin 在 Android Studio 中制作基于生命网格的游戏。本质上,网格将根据一组规则每秒钟更新一次。但是,我不能为我的生活更新网格。

出于某种原因, notifyItemChanged() 没有调用 onBindViewHolder 来正确更新网格。在某些情况下,我能够找到解决方法,即专门调用 onBindViewHolder 并通过当前的 cellViewHolder 及其位置,但这不会让我得到我正在寻找的结果。具体来说,在我声明 testUpdate() 的函数中,我需要能够更改网格所基于的数据数组,然后从该函数通知网格发生了更改并且应该更新。但是,notifyItemChanged() 和 notifyDatasetChanged() 都不会调用 onBindViewHolder()。我很茫然,任何帮助将不胜感激!

我对 Kotlin 很陌生,所以如果这段代码很糟糕,我深表歉意。

这是我的代码:

0 投票
1 回答
36 浏览

java - 将子活动中的数据传递给先前活动中的回收站

我是一个安卓菜鸟。

我的主要活动包含一个回收视图,其中列出了用户/学生预订的所有课程。数据来自 SQLite DB。当用户点击其中一个课程时,一个新活动 (LessonInfo) 会显示其详细信息,并且——只有其中一个处于特定状态(“prenotato”,即已预订)——用户可以通过按下两个不同的按钮来更改其状态。

在用户按下这些按钮之一后,我正在尝试更新 MainActivity 中的回收站视图。目前,视图会在每次 onResume 和每次提取数据库中的所有数据时更新。

主活动-->课程信息-->主活动已更新

我希望 1)仅在用户更改一堂课的状态时获取数据,以及 2)仅使用其位置更新该特定课程的持有者。试了好几次都被锁了

非常感谢

主要活动

LessonsRecyclerAdapter

课程信息

更新 - 已解决

感谢 Taranmeet Singh,我找到了实现目标的方法。

我首先尝试了使用startActivityForResult()(DEPRECATED) 和notifyItemChanged().

我注意到我必须对 LessonsInfo 中的 onClickListeners 进行一些更改:而不是重新创建活动,我现在回忆起一个函数 ( switchView()),女巫只是修改了外观。

为了让用户看到 LessonInfo 活动中的变化(不会自动返回 MainActivity),我只是isLessonUpdated在函数中使用了一个布尔值作为标志onBackPressed():当用户返回上一个活动时,当且仅当他已经改变了课程的状态,我设置了Intent的结果。

最后,我用 替换了不推荐使用的函数registerForActivityResult()registerForActivityResult相应地更改了主要活动中的 onItemClick。

这是我想出的代码。没有对 LessonRecyclerAdapter.java 应用任何相关更改。随时提出改进建议。

新的 MainActivity

新课程信息