首页 > 解决方案 > 为什么我的 ListView 只创建可见的子元素?

问题描述

我正在尝试制作一个包含以特定顺序猜测某些单词的应用程序。

我在右边有 16 个按钮,每个按钮都有一个相关的单词。当我单击正确的按钮时,ListView 中的单词变为灰色。我遇到的问题是,当我在 listView 中滚动并单击正确的按钮时,getChildAt 方法从第一个可见元素开始计数,而不是从 listview 的开头开始计数;而且我不知道如何解决它。

我正在使用 ArrayAdapter。

这是我设置适配器的地方:

// frutasLista is the array with the String elements that I want to add to the list.
((ListView) activity.findViewById(R.id.listaFrutas)).setAdapter(
                new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, frutasLista)
);

这是我将当前元素颜色设置为灰色的地方:

// contAciertos Is the counter where I save how many word the user guessed right.
((TextView) ((ListView) activity.findViewById(R.id.listaFrutas)).getChildAt(contAciertos)).setTextColor(Color.GRAY);
contAciertos++;

当我单击正确的元素并且我没有进行任何滚动时,它应该按 第一种情况工作

但是如果我做一些滚动并再次单击第一个正确的元素,就会发生这种情况: 第二种情况

我向下滚动到“Platano”并单击第一个正确的元素“Cereza”。而不是像我试图做的那样将 ListView 的第一个元素变成灰色。它改变了当时第一个可见元素“Platano”。

提前致谢。对不起,如果没有清楚地解释自己。

标签: androidlistviewscrollnullpointerexceptionandroid-arrayadapter

解决方案


推荐阅读