我正在开发 SoundBoard 应用程序。我的类扩展ListActivity,listview如下
[Image] [Text]
[Image] [Text]
[Image] [Text]
现在,当用户点击任何 TextView 时,我需要更改该 TextView 的图像。我通过以下代码实现它。
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView tv1 = (TextView) view;
//Here I change the image with tv1 as reference
}
但我需要一种替代方法来获取选定的 TextView。因为当我使用上述方法更改图像时,如果用户选择列表中的第三行,则第二个滚动页面的第三行中的图像会发生变化,第三个滚动页面的第三行等等都会受到影响。不仅是所需的 textview 图像更改,但滚动列表时更改即将滚动页面中的一个 textview。希望你能解决我的问题。任何帮助表示赞赏。谢谢
最佳答案
我认为您看到的行为是因为 Android 回收了 ListView 中使用的 TextView;这就是为什么 Adapter.getView()
有一个 convertView争论。 (一旦 TextView 滚出屏幕,它可以通过 convertView
参数传递到 Adapter.getView()
中,以重新用于已滚动的项目到显示器上。)
您可以尝试添加 android.widget.AbsListView.OnScrollListener到 ListView,以跟踪列表中的哪些项目在给定时间出现在屏幕上。您可能还需要覆盖 Adapter.getView()
以强制将图像恢复为默认值(或者更一般地说,使用适合新显示项目的图像。)
关于Android:在ListView的onItemClickListener()中获取TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394972/