我有一个带有EditText的自定义列表视图,我的问题是当一个EditText值发生更改时,我需要在列表视图中更新另一个EditText值。
例如:
如果edittext position1值为'5',而edittext position 2值为'2',则意味着我需要更新特定的位置值为'7'(5+2=7)。
如果不在每次更改另一个edittext值时刷新视图,这怎么可能呢?
提前感谢。。。
我将给出一个通用的解决方案,而不是0/1等的位置。。因此,要执行这样的操作,请执行以下步骤:
1.从ListView更改为RecyclerView。2.RecyclerView强制开发者遵循视图持有者模式(我想你知道什么是视图持有者模式,如果不知道,你可以用谷歌搜索)
因此,在你的回收视图中,每当用户点击一行时,你就会得到点击的位置。
使用以下方法获取特定位置的视图
myRecyclerView.findViewHolderForAdapterPosition(pos);
这里的pos
是要在其中编辑edittext值的recyclerview行。
这是最棘手的部分。
由于recyclerview使用viewholder模式,如果不在视口中,则上述方法可能返回null(i:e;如果在屏幕中看不到)
如果myRecyclerView.findViewHolderForAdapterPosition(pos);
,则该方法返回一个良好的视图(视图当前在池中并且可以访问)
如果不是,则返回null,因此您需要记住该事件,当用户滚动时,如果当前显示的位置与要更新的视图匹配,则您将获得当前显示的职位,然后更新您的编辑文本。
事实上,有一次我遇到了同样的情况,这就是我解决它的方法。
如果你有任何疑问,请在下面评论。
如果你在一个列表中只有两行,我会考虑的。myRecyclerView.findViewHolderForAdapterPosition(pos);
这个方法永远不会返回false,除非你的每一行都是屏幕大小。
您可以使用edittext text-changed监听器来实现此类实现,例如在编辑时更新文本。。。要了解如何实现,请在Text Change Listener 上查看此链接android