ListView.invalidate()和ListView.invalidateViews()有什么区别? 对我而言,仅使用invalidate()无效。然而,invalidateViews()则可以按照我期望的方式工作,即重新绘制列表项。
根据Android网页View Invalidate,ListView.invalidate()将使整个视图无效。如果视图可见,则会调用onDraw(android.graphics.Canvas)事件来重绘Canvas背景。这在外观/感觉发生变化时非常有用。根据Android AbsListView invalidateViews所述,这将导致所有视图被重建和重绘。我认为这意味着它将“重建”与ListView相关联的修改数据,并更新外观/感觉。但是,这也会更新子视图,并且需要时间。通常在数据已更改时,我使用BaseAdapter的notifyDataSetChanged()方法。总之,请根据您的需求选择适当的方法。