gpt4 book ai didi

java - 如何在 Adapter 中只重绘一个 View

转载 作者:行者123 更新时间:2023-11-30 03:24:15 25 4
gpt4 key购买 nike

是否有可能强制适配器仅重绘特定项目?

目前,如果我想重绘列表,我会调用 notifyDataSetChanged(),它会重新遍历所有数据集并重绘所有元素。如果我确切地知道更新了哪个元素并且只想重绘那个元素怎么办?

最佳答案

notifyDataSetChanged() 不是为了重绘元素,它是为了通知适配器,元素以某种方式发生了变化,例如有更多的元素,或者它们的数据是从另一个设置的类等。当然,适配器连接到的 ListView(或其他类)将重绘元素,因为适配器被迫告诉他,它的数据集已更改。
正如 Yume117 评论的那样,为了重绘,你可以调用一个 Viewinvalidate() 方法(或者更好的 postInvalidate()),

postInvalidate():
Cause an invalidate to happen on a subsequent cycle through the event loop.

public void invalidate ()

Added in API level 1
Invalidate the whole view. If the view is visible, onDraw(android.graphics.Canvas) will be called at some point in the future. This must be called from a UI thread. To call from a non-UI thread, call postInvalidate().

您可以在 AdaptergetView() 方法中的一个 View 上调用这些方法,或者只在 ListView(或其他 View )本身上调用 invalidate,并且它只会重绘可见元素。

关于java - 如何在 Adapter 中只重绘一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18534897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com