在android中,当listview中的另一个edittext值发生变化时,如何更新edittext值



我有一个带有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

最新更新