Avi*_*ngh 5 android android-listview
我正在使用ArrayAdapter在ListView中设置具有无限滚动功能的数据.ListView的行中有一个ImageView和两个TextView.首先,我正在加载带有10个项目的ListView,然后向下滚动,我调用setonscrolllistener中的Web服务将下一个10项加载到ListView.当新项目添加到Arraylist时,我只是调用adapter.notifysetdatachangedtell adapter来刷新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;
}
Run Code Online (Sandbox Code Playgroud)
有人可以对此有所了解吗?
看来你的做法是正确的,所以问题可能出在你的 imageLoader 上。如果 url 相同,则不应在您的 imageview 上再次设置图像。
例如,您可以setTag (url)在 imageView 上使用该方法并测试 url 是否已更改。
希望对你有帮助。
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |