gpt4 book ai didi

java - ListView 重复操作

转载 作者:行者123 更新时间:2023-12-01 15:33:37 25 4
gpt4 key购买 nike

晚上好,StackOverflow

这次我正在与包含 TextView 的 ListView 进行斗争。

我添加了一个 OnItemClick 监听器。

    v.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
TextView tvItm = (TextView) arg1;
int Col = tvItm.getTextColors().getDefaultColor();
if (Col == Color.WHITE)
tvItm.setTextColor(Color.GREEN);
else
tvItm.setTextColor(Color.WHITE);
}
});

正如您所看到的,我切换了文本的颜色,并且它有效。但是,它一次适用于多个项目,即使我只单击一个项目。因此,当我单击第一个项目时,它会变成绿色,然后有六个白色项目,第 7 个项目是绿色的,但我从未单击过第 7 个项目!!

item1 - 点击 - 绿色
item2 - 未点击 - 白色
item3 - 未点击 - 白色
item4 - 未点击 - 白色
item5 - 未点击 - 白色
item6 - 未点击 - 白色
item7 - 未点击 - 绿色
item8 - 未点击 - 白色
item9 - 未点击 - 白色
等等...

并且该模式在所有列表中都会延续。

此外,如果我快速上下滑动/移动列表,模式会上下移动 1 到 2 个项目。

这是一个屏幕截图: List Problem

第一张图片:什么也没做
第二张图片:我点击了“AK Kusine”
第三张图片:我向下滚动,“Allan Malka”也发生了变化..

如果我在监听器中设置断点,则每次单击列表时它只会停止一次。是什么导致了这种行为?更重要的是,我该如何解决它?

最佳答案

这是因为 getView 方法会回收您的 View 以优化性能。在您的适配器中实现 getView(intposition, View ConvertView, ViewGroupparent) 方法(因此您需要扩展适配器),以获取 convertView 并使得根据位置它是绿色或白色..

观看this详细解释。它可能看起来很长,但非常有用。

关于java - ListView 重复操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243888/

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