, что m+=songstoadd1.size()
строка кажется полностью отключенной ... m++
было бы достаточно.
если у вас есть 3 песни, начинающиеся с одной и той же буквы, первый проход цикла добавит 2 первые песниувеличьте значение m
(в строке m++
), затем добавьте 2 к m
(в строке m+=songstoadd.size()
. Затем m
равно 3
и цикл завершится.
обратите внимание, однако, что это может переместить проблему в другое место ... вам лучше иметь внутренний цикл, который увеличивает m
, в то время как песни имеют ту же первую букву, и внешний цикл, который добавляет, создает новый раздел, содержащий песни, найденныевнутренний цикл.
что-то вроде:
while( m < songtitle.size() ){
n = m+1;
songstoadd1.add(songtitle.get(m));
while ( (n<songtitle.size()) && (songtitle.get(m).substring(0, 1).equals(songtitle.get(n).substring(0, 1))) ){
songstoadd1.add(songtitle.get(n));
n++;
}
adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd1));
songstoadd1.clear(); // i don't know if this method exists, anyway it should clear the list content
m = n;
}