我有一个ListView
显示新闻项目。它们包含图像、标题和一些文本。图像加载在一个单独的线程中(带有队列和所有),当下载图像时,我现在调用notifyDataSetChanged()
在列表适配器上更新图像。这可行,但是getView()
被调用太频繁,因为notifyDataSetChanged()
calls getView()
对于所有可见的项目。我只想更新列表中的单个项目。我该怎么做?
我当前的方法存在的问题是:
- 滚动速度很慢
- 我在图像上有一个淡入动画,每次加载列表中的单个新图像时都会发生该动画。
感谢米歇尔您的信息,我找到了答案。
您确实可以使用获得正确的视图View#getChildAt(int index)
。问题是它从第一个可见项目开始计数。事实上,您只能获取可见的项目。你用以下方法解决这个问题ListView#getFirstVisiblePosition()
.
Example:
private void updateView(int index){
View v = yourListView.getChildAt(index -
yourListView.getFirstVisiblePosition());
if(v == null)
return;
TextView someText = (TextView) v.findViewById(R.id.sometextview);
someText.setText("Hi! I updated you manually!");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)