android‎ > ‎

ArrayListにクラスを格納する

ArrayListに複数の情報を備えた構造体を格納したい場合がある。その場合は構造体の代わりにクラスを生成してArrayListに格納することで同等の機能を実現することができる。

クラスの準備とローカル変数の定義
        public List<MusicRecord> songs = new ArrayList<MusicRecord>();
// 再生リストの1レコードを管理するクラス
class MusicRecord{
private String fileName;
private int beginTime;
private int endTime;
private String viewName;
public MusicRecord(String AFileName, String AViewName, int ABeginTime, int AEndTime){
this.fileName=AFileName;
this.beginTime=ABeginTime;
this.endTime=AEndTime;
this.viewName=AViewName;
}
public void setFileName(String fileName) { this.fileName = fileName; } public String getFileName() { return fileName; } public void setBeginTime(int beginTime) { this.beginTime = beginTime; } public int getBeginTime() { return beginTime; } public void setViewName(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setEndTime(int endTime) { this.endTime = endTime; } public int getEndTime() { return endTime; } 
}

ArrayListにクラスを格納
songs.add(new MusicRecord(file.getName(), file.getName(), -1, -1));

クラスが格納されたArrayListの並び替え
class StringComparator implements Comparator<MusicRecord> {
public StringComparator() { 
}
public int compare(MusicRecord arg0, MusicRecord arg1) {  
return (arg0.getViewName()).compareTo(arg1.getViewName());
}
}
Collections.sort(songs, new StringComparator());

ArrayListに格納されているクラスの参照
songs.get(iCurrentIndex).getBeginTime();

Comments