Android:在ListView的onItemClickListener()中获取TextView

标签 android listview listviewitem

我正在开发 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/

相关文章:

java - 如何使用 ContextMenu 删除 Sqlite 中的行?

android - 没有获取 ListView 的 OnItemClick 事件

Flutter - 避免 ListView 重建

android - 滑动标签布局文本为大写

android - 拖放 ImageView

android - 在 ListView 项的子项上单击

android - 覆盖 Android ListView onItemClick 导致项目被选中(选中)

c# - 在 ListViewItem C# 中添加多于 2 个图像

android - GreenDAO 左加入

android - sendSMS() 方法无法读取字符串