android - 为什么我的 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”。
提前致谢。对不起,如果没有清楚地解释自己。
解决方案
推荐阅读
- vue.js - Vuejs 道具更新
- c++ - 关闭 TCP v6 连接 C++
- c# - C#两个时间值的差异一个是xml另一个是当前时间
- java - 如何优化 Springboot jar 的 CPU 使用率
- c - 没有正文的 if 语句
- java - 我可以在调用 this() / super() 之前和初始化任何最终字段之前在构造函数中插入指令吗?
- javascript - Socket.IO 可以扩展吗?
- oracle - 如何在Oracle中查找应用程序行生成的varchar GUID主键的位置
- python - PYTHON。根据具有范围和标签的第二个数据集标记单列数据集中包含的值
- javascript - 为什么这总是平局?