首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SimpleCursorAdapter进行异步绑定

问使用SimpleCursorAdapter进行异步绑定
EN

Stack Overflow用户
提问于 2013-03-05 09:15:52
回答 2查看 802关注 0票数 0

我有一个ListView,它应该显示包含一些文本和图像的项目。

数据是从本地SQLite db文件(包含文本和图像URL)加载的。

我想:

  • 从DB那里拿到短信,网址。
  • 从URL异步下载图像
  • 将两个值绑定到ListView (使用SimpleCursorAdapter)。

到目前为止,我能够从DB读取值,但是我不确定如何在成功加载每个映像之后才能运行绑定?

换句话说,在加载到适当的UI项时,我希望异步绑定每个元素。

EN

回答 2

Stack Overflow用户

发布于 2013-03-05 09:50:46

下面是一个很好的例子,它展示了如何实现这个http://www.androidkit.com/loading-images-from-remote-server-over-http-on-a-separate-thread。

简而言之,

1)你需要一个Map<Url, Bitmap>。

2)在服务器的图像数据不可用时显示默认图像。

3)让onScroll侦听器为您的ListView,以了解哪些项目当前显示。

4)首先,下载正在显示的内容。

5)下载图像后,调用notifyDataSetChanged()将可用图像绑定到视图。

6)您可以使用Softreferences或LRUCache来避免OutofMemoryException

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 10:20:03

我已经解决了一个类似的问题。我从服务器接收到一个XML,并将信息存储在数据库中。之后,我使用CursorAdapter填充了列表。在我的例子中,我既有图像也有文本。

为了解决游标适配器中的问题,我执行了如下操作:

代码语言:javascript
复制
@Override
public void bindView(View v, Context ctx, Cursor c) {
    TextView title =  (TextView) v.findViewById(R.id.titleID);
    title.setText(c.getString(c.getColumnIndex(yourColumName)));
    ImageView i =  (ImageView) v.findViewById(R.id.ImageID); 
    String s = c.getString(c.getColumnIndex(youtImageColumn));
    imageLoader.DisplayImage(s,i);
}


@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View v = inflater.inflate(R.layout.yourRowLayout, parent, false);
    return v;
}

在本例中,ImageLoader是从这里获得的异步延迟图像加载器:https://github.com/thest1/LazyList

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15219901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档