给定ListActivity
与ListView
以及根据用户输入更改项目的要求,如何进行更改以使更改能够继续滚动?Android:更新ListView中滚动的项目
当前应用程序使用由数据库中的Cursor
填充的ResourceCursorAdapter
。当用户长时间点击某个项目时,该项目上的ImageView
会在View.VISIBLE
和View.GONE
之间切换。另外,管理支持视图状态的数据库中的标志。
但是,当该项目滚动屏幕,然后回到屏幕上,该项目表示没有最近的变化。换句话说,如果我通过长时间点击使ImageView
可见,它就会显示正常。但是当我从那个项目滚动时,然后回滚到它,它不再可见。
我目前的解决方案(我认为是错误)是保存滚动位置,从数据库刷新整个列表,然后再次定位到正确的位置。
我想有一些方法可以告诉一些Androidy的东西把新的可见性状态放入它的缓存中,但我找不到它。我试过setScrollingCacheEnabled(false)
,还有一些其他的缓存是错误的,但这些都没有什么区别。我试图找出如何让Android意识到这是'肮脏',但我发现只是查询它是否isDirty()
。我也尝试了ResourceCursorAdapter.notifyDataSetChanged()
,并且这使得setVisibility()
调用对可见性无效。我也在各个地方试过invalidate()
和invalidateViews()
。如果以正确的顺序(在更改可视性之前或之后)将其应用于正确的对象,这可能是其中的一种。 ListView中
你改变任何行时数据用户长点击?您应该更改数据模型,以便下一次根据新的Data模型类进行充气。 ... – Kushal
“ListView”功能的首选方法现在是“RecylcerView”。这里的答案包含管理列表的一些细节,该列表管理用户首选方法实现的列表中用户更改的数据:http://stackoverflow.com/a/40568269/897007 – Dale