我正在使用ArrayAdapter在具有无限滚动功能的ListView中设置数据。在ListView的行中有一个ImageView和两个TextViews。起初,我使用10个项目加载ListView,向下滚动时,我调用setonscrolllistener中的Web服务将下一个10个项目加载到ListView。当新项目添加到Arraylist时,我只需拨打adapter.notifysetdatachanged
来告诉适配器刷新ListView。添加新项目时ListView闪烁
现在的问题是,无论何时将新项添加到ListView中,整个ListView刷新并导致ListView中已加载的图像闪烁。是的,我将光盘和内存中的所有图像缓存起来,并且代码非常顺利地进行缓存。
我也尝试使用此adapter.addall(myarraylist)
将数据添加到适配器中,但它没有帮助。 ImageViews仍然闪烁。我在StackOverflow上搜索了很多关于它的信息,发现无法在ListView中添加和显示更多项目而无需刷新整个listView。我已经知道,但必须有一些方法可以将新数据添加到ListView,而不是刷新已加载的数据。
我正在像这样设置适配器。
public View getView(int position, View view, ViewGroup parent)
{
int main = R.layout.layout;
ViewHolder holder = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(main, null);
holder.image = (ImageView) convertView.findViewById(R.id.imageview);
///More stuff
view.setTag(holder);
} else {
holder = (ViewHolder)view.getTag();
}
// Loading ImageViews by Urls
return view;
}
任何人都可以请点亮它吗?
不完全确定,但这可能是相关的。 http://stackoverflow.com/questions/13322575/android-visible-listview-images-flicker-when-adding-data-to-arrayadapter – Zerkz
试试这个https://github.com/commonsguy/cwac-endless –
你能展示如何将图像加载到视图中?欢呼 – asheinfeld