异步填充ArrayList以显示在列表视图中

时间:2012-06-13 21:27:02

标签: android asynchronous android-listview android-listfragment

当用户点击某个按钮时,会显示一个新的ListFragment。此片段将包含相关列表及其关联的艺术家姓名。

我创建了自己的课程AlbumItem (String name, String artist),其中name是相册的标题,artist是相应的艺术家名称:

public class AlbumItem {

    private String AlbumName;
    private String AlbumArtist;

    public AlbumItem(){
    }

    public AlbumItem(String name, String artist){
        this.AlbumName = name;
        this.AlbumArtist = artist;
    }

    public String getAlbumName() {
        return AlbumName;
        }

    public void setAlbumName(String AlbumName) {
        this.AlbumName = AlbumName;
        }

    public String getAlbumArtist() {
        return AlbumArtist;
        }

    public void setAlbumArtist(String AlbumArtist) {
        this.AlbumArtist = AlbumArtist;
        }
}

然后我编写了自定义适配器,它将Album的名称和Artist的名称与ListView行中正确的TextView相关联。

那么我可以声明一个AlbumItem的ArrayList并填充它:

ArrayList<AlbumItem> arrayList;
arrayList.add(new AlbumItem ("Album's title", "Artist");

现在我几乎没有问题:

1)我会采取适当的方式吗?我总是学会填写这样的列表视图,我很习惯使用这种技术(Custom Item class + ArrayList + CustomAdapter),但我正在做一个音乐播放器,我想查询专辑列表并更新listview异步,以便不阻止UI。我不知道是否可以通过像我一样的方式在ArrayList中加载数据来实现它。

2)如何异步填充这个ArrayList?使用LoaderManager / CursorLoader或Asyntask或其他什么? (我的目标是Android 4.0)

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

CursorLoader是一种加载列表的便捷方式,尤其是从数据库或其他本地数据源获取数据时。如果您的数据来自网络,则可能更容易使用asynctask获取数据并将其加载到列表适配器中。如果您熟悉其中之一,请使用它。