android – ListView invalidate()vs invalidateViews()之间的区别?

ListView.invalidate()和ListView.invalidateViews()有什么区别?

对我来说,仅使用invalidate()不起作用.而invalidateViews()只是按照我想要的方式工作,即重绘List项.

最佳答案 根据
Android网页
View Invalidate,ListView.invalidate()会

Invalidate the whole view. If the view is visible,
onDraw(android.graphics.Canvas) will be called

这通过onDraw事件重绘Canvas背景.当外观/感觉发生变化时,这非常有用.

ListView.invalidateViews(),在Android AbsListView invalidateViews上声明,

Causes all the views to be rebuilt and redrawn.

我认为这意味着它将“重建”与ListView相关联的修改数据,并更新外观.但是,这也会更新子视图,这很耗时.通常我在数据发生变化时使用BaseAdapter的notifyDataSetChanged().

总之,请使用适合您需求的方法.

点赞