사용자가 버튼을 클릭하면 새 ListFragment가 표시됩니다. 이 조각에는 연결된 아티스트 이름이있는 앨범 목록이 포함됩니다.리스트 뷰에 표시되도록 비동기 적으로 ArrayList 채우기
나는 name
이 앨범의 제목과 artist
있는 내 자신의 클래스 AlbumItem (String name, String 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;
}
}
은 그 때 나는 올바른 텍스트 뷰와 앨범의 이름과 아티스트의 이름을 연관 내 사용자 지정 어댑터를 썼다 내 ListView의 행에.
그럼 내가 AlbumItem의 ArrayList를 선언하고 이런 식으로 채울 수 :
1) 나는 적절한 방법을 것인가 :
ArrayList<AlbumItem> arrayList;
arrayList.add(new AlbumItem ("Album's title", "Artist");
가 지금은 몇 가지 질문이? 나는 항상 그런 listviews를 작성하는 법을 배웠고이 기술 (Custom Item class + ArrayList + CustomAdapter)을 사용하는 것이 매우 편하지만 Music Player를하고 있고 앨범 목록을 쿼리하고 싶습니다. 비동기 적으로 목록보기 UI가 차단되지 않습니다. ArrayList에서 데이터를로드하는 방법으로 데이터를로드 할 수 있는지 여부는 알 수 없습니다.
2)이 ArrayList를 비동기 적으로 채우는 방법은 무엇입니까? LoaderManager/CursorLoader 또는 Asyntask 또는 다른 것을 사용합니까? (Android 4.0을 타겟팅 중입니다.)
감사합니다.
목록 작성 장소는 어디입니까? DB? 편물? 그것은 db에서 나는 당신이 실제로 그것을 비동기 적으로 필요하다고 생각하지 않는다. (매우 긴 조작이고 오랜 시간이 걸리며 사용자가 알아 차리지 않는다면 그렇지 않다. AsyncTask : http://developer.android. com/reference/android/os/AsyncTask.html –
최신 API를 대상으로하므로 데이터가 DB에 저장되어 있으면 ListFragment + Loader (CursorLoader)를 사용하는 것이 좋습니다. –
@ Nuno Gonçalves : 앨범을 만들면 비동기로 처리하는 것이 항상 도움이되지 않을 수도 있습니다. 그러나 목록이 너무 길거나 표지의 축소판을 나중에 쿼리하려는 경우 UI가 느려질 위험이 있습니다. – Jecimi