我有一个带EditText的自定义列表视图,我的问题是当一个edittext值被更改时,我需要更新内部列表视图中的另一个edittext值。
例如:
如果edittext position1值为' 5'并且edittext position2值为' 2'意味着我需要更新特定的值,值是' 7' (5 + 2 = 7)。
如果没有在每次更改另一个edittext值时刷新视图,这怎么可能?
提前感谢...
答案 0 :(得分:1)
我将给出一个广义的解决方案,而不是0/1等的位置。 因此,要执行此类操作,请执行以下步骤:
1.从ListView更改为RecyclerView。 2.RecyclerView强制开发人员遵循视图持有者模式(我假设你知道什么视图持有人模式,如果不是你可以google它)
因此,无论何时用户点击某行,您都会在您的recyclerview中获得点击的位置。
使用以下方法获取特定位置的视图
myRecyclerView.findViewHolderForAdapterPosition(pos);
此处pos
是您要编辑edittext值的recyclerview行。
这是最棘手的部分。
由于recyclerview使用了视图模式,如果不在视口中,上面的方法可能会返回null(i:e;如果在屏幕中看不到它)
如果myRecyclerView.findViewHolderForAdapterPosition(pos);
此方法返回的视图很好且很好(视图当前在池中并且可以访问)
如果不是,则返回null,所以你需要做的是记住事件,当用户滚动时,如果当前显示的位置与要更新的视图匹配,则会获得当前显示的位置,然后更新你的编辑文本。
实际上,一旦我面对同样的情况,这就是我如何解决它。
如果您有任何疑问,请在下方评论。
如果列表中只有两行,我就是这种情况。 myRecyclerView.findViewHolderForAdapterPosition(pos);
此方法永远不会返回false,除非您的每一行都是屏幕大小。
答案 1 :(得分:0)
您可以使用edittext文本更改的侦听器进行此类实施,例如在编辑时更新文本...如何实现检查此链接android on Text Change Listener