将String添加到适配器

时间:2011-11-22 09:25:44

标签: android arrays list adapter

我有一个适配器,我想添加一个字符串,但是当我运行这个代码时,它只添加了songstoadd变量中的最后一个字符串...这是一个自定义适配器,它在必要的地方添加分隔符但在数组中适配器我想要一个名字中包含相同第一个字母的所有字符串....

SeparatedListAdapter adapter = new SeparatedListAdapter(this);
     ArrayList<String> songstoadd = new ArrayList<String>();

              Collections.sort(songtitle);
              int m = 0;
              while( m <songtitle.size()-1){
                  if(songtitle.get(m).substring(0, 1) == songtitle.get(m+1).substring(0, 1)){
                      m++;
                  }else{
                   songstoadd.clear();
                   songstoadd.add(songtitle.get(m));

                adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd));

              m++;
                  }



      }
              setListAdapter(adapter);

        }

2 个答案:

答案 0 :(得分:1)

试试这个,让我知道发生了什么......

songstoadd.clear();
 while( m <songtitle.size()-1){
                  if(songtitle.get(m).substring(0, 1).equals( songtitle.get(m+1).substring(0, 1))){
                      m++;
                  }else{

                songstoadd.add(songtitle.get(m));
                adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd));

              m++;
                  }

有关详细信息,请查看

Android: how to use SectionIndexer

Using AlphabetIndexer for fastscrolling ListView

Create easy alphabetical scrolling in ListView?

答案 1 :(得分:0)

尝试更改您的时间,如下所示,然后尝试..

while(m <songtitle.size()-1){
     if(songtitle.get(m).substring(0, 1) == songtitle.get(m+1).substring(0, 1)){
         songstoadd.add(songtitle.get(m));
         m++;
     }else{

         songstoadd.add(songtitle.get(m));

         adapter.addSection(songtitle.get(m).substring(0, 1), new ArrayAdapter<String>(getApplicationContext(),R.layout.song, songstoadd));

         songstoadd.clear();

         m++;
    }
}