自定义适配器 ListView 奇怪的行为

Custom Adapter ListView strange behaviour

我想实现一个列表视图,您可以搜索项目并单击它们。这里一切正常。现在我在视图中有一些项目,我想设置 alpha 值以使它们看起来无法单击。 为了显示这个问题,我减少了我的函数以仅将 alpha 值设置为项目是一些名为 "rezept_groesse" 等于 "Snack" 的变量。此字符串也显示在列表视图中。 所以我现在的任务是:减少项目的 alpha 值 "rezept_groesse" 等于 "Snack"。听起来不是很复杂,但我得到了一些奇怪的行为: 我创建了一个自定义基础适配器,并在 "getView" 中设置了项目的文本 (TextViews) 以及 alpha 值,如下所示:

    if(spannableString_groesse.toString().equals("Snack")){
        holder.rezept_name_search.setAlpha(0.2f);
    }

    holder.rezept_name_search.setText(spannableStringBuilder);

但 alpha 值不仅针对 "Snack" 值设置,还针对其他一些值设置:

正如您所见,不仅 "Snack" 的 alpha 值降低了,"kleine Mahlzeit" 的 alpha 值也降低了,但并非总是如此。

如果我上下滚动 ListView 一段时间,一个接一个,所有 listview 项目的 alpha 值都会减少,无论哪个值 "mahlzeit_groesse" 具有:

也许有人对这个问题有解释? 感谢您的帮助!

我现在解决了我的问题。我的错误是在滚动时没有重置 alpha 值。所以过了一会儿,每个元素的 alpha 值都设置为 0.2f。 代码必须更改为如下所示:`

if(spannableString_groesse.toString().equals("Snack")){
    holder.rezept_name_search.setAlpha(0.2f);
}else{
    holder.rezept_name_search.setAlpha(1.0f);
}

holder.rezept_name_search.setText(spannableStringBuilder);