将字符串数组中的图像和文本添加到fedor的Lazy Loading教程中

时间:2011-12-23 23:46:27

标签: android listview lazy-loading

我必须编写一个应用程序来解析在线XML文件中的节点列表(每个节点包含一个文本,一个图像链接和一个网站链接),并在{{1}中显示它们因此,选择ListView的元素(带有相应的图像和标题)将打开浏览器中的相关链接。 目前我已经解析了XML文件中的信息,并将其存储在三个String数组中以便于访问/处理:titleArray,imageurlArray和linkArray

我尝试修改Fedor的延迟加载应用程序(https://stackoverflow.com/a/3068012/1114109),以使其与ListViewtitleArray一起使用,但我似乎无法使用做对了。

1 个答案:

答案 0 :(得分:2)

我想说最简单的方法是将三个独立的数组捆绑成一个包含相同数据的对象数组。换句话说,创建一个具有三个属性的实体对象:title,imageUrl和link。

class XMLEntity {
    String title, imageUrl, link;
    // add contructor, getters and setters to your own liking...
}

...
XMLEntity[] objects = ...

然后将这个对象数组传递给适配器的构造函数,在getView方法中,您可以根据XMLEntity中的数据设置TextView,ImageView和其他UI元素。

public LazyAdapter(Activity a, XMLEntity[] objects) {
    //...
}

public View getView(int position, View convertView, ViewGroup parent) {
    // ... convertview stuff
    XMLEntity current = objects[position]
    someTextView.setText(current.getTitle());
    imageLoader.DisplayImage(current.getImageUrl(), someImageView);
}

如果你走这条路,我也会看看ArrayAdapter,它简化了一些BaseAdapter的逻辑。

//编辑:如果你喜欢一个快速的解决方案:将适配器的实现作为子类移动到包含ListView的活动中,只需让它适用于你目前拥有的三个数组 - 假设它们在哪里存储并且所有三个数组的索引“匹配”。

public View getView(int position, View convertView, ViewGroup parent) {
    // ... convertview stuff
    someTextView.setText(titleArray[position); // get title from titleArray
    imageLoader.DisplayImage(imageurlArray[position], someImageView); //get image url from imageurlArray
}