【发布时间】:2012-01-04 05:05:14
【问题描述】:
我有一个歌曲列表数组,我想将所有以相同首字母开头的歌曲添加到同一部分。此循环和方法有效,只是它忽略了 songtoadd 列表数组中的最后一首歌曲。
while 循环不是问题,问题在于检查布尔值的 if 语句。
Collections.sort(songtitle);
int m = 0;
ArrayList<String> songstoadd1 = new ArrayList<String>();
boolean stringsequal = true;
while( m <songtitle.size()-1){
stringsequal = false;
if(songtitle.get(m).substring(0, 1).equals(songtitle.get(m+1).substring(0, 1))){
stringsequal = true;
if(stringsequal){ // THis is the Issue
songstoadd1.add(songtitle.get(m));
songstoadd1.add(songtitle.get(m+1)); ///// This is where it leaves off last item in the list ////////////
stringsequal = false;
m++;
Toast.makeText(getApplicationContext(), songtitle.get(m) +" " + songtitle.get(m+1), Toast.LENGTH_LONG).show();
}
adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd1));
m+=songstoadd1.size();
}else{
ArrayList<String> songstoadd = new ArrayList<String>();
songstoadd.add(songtitle.get(m));
adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd));
m++;
}
}
setListAdapter(adapter);
}
【问题讨论】:
-
stringsequal = true;在这里没用,你在下面一行测试一下(这样测试总会成功,或者缺少一部分代码),然后在退出之前重置它if块,并且您根本不会在其他任何地方使用该变量。
标签: android list if-statement arraylist boolean