gpt4 book ai didi

Android ListView 刷新单行

转载 作者:IT老高 更新时间:2023-10-28 13:11:18 25 4
gpt4 key购买 nike

在获得ListView 的单行数据后,我想更新该单行。

目前我正在使用 notifyDataSetChanged(); 但这使得 View react 非常缓慢。还有其他解决方案吗?

最佳答案

饰演 Romain Guy explained a while backGoogle I/O session期间,仅更新 ListView 中的一个 View 的最有效方法如下(此更新整个 View 数据):

ListView list = getListView();
int start = list.getFirstVisiblePosition();
for(int i=start, j=list.getLastVisiblePosition();i<=j;i++)
if(target==list.getItemAtPosition(i)){
View view = list.getChildAt(i-start);
list.getAdapter().getView(i, view, list);
break;
}

假设 target 是适配器的一项。

此代码检索 ListView,然后浏览当前显示的 View ,将您正在寻找的 target 项目与每个显示的 View 项目进行比较,以及您的目标是否在其中那些,获取封闭 View 并在该 View 上执行适配器 getView 以刷新显示。

作为旁注 invalidate 不像某些人期望的那样工作并且不会像 getView 那样刷新 View ,notifyDataSetChanged 将重建整个列表并最终调用getview 为每个显示的项目和 invalidateViews 也会影响一堆。

最后一件事,如果他只需要更改行 View 的 subview 而不是像 getView 那样更改整个行,也可以获得额外的性能。在这种情况下,以下代码可以替换 list.getAdapter().getView(i, view, list);(更改 TextView 文本的示例):

((TextView)view.findViewById(R.id.myid)).setText("some new text");

在我们信任的代码中。

关于Android ListView 刷新单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123083/

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