給定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