2011-10-28 25 views
1

私はスピナーでそれを使用するための配列リストを持っています、私はスピンナーをタイトルとして持っていて、スピナーの2番目の項目から配列リストをソートしたいのですが、私はそれがで... 私のコードは以下の通りです...ショーのためのコードの下2番目の項目から並べ替える配列android

// this is my title ie. "provincia" 
    String select2= "Provincia"; 
     if(!estado1.contains(select2)){ 
      estado1.add(select2); 
      } 

    for (int i = 0; i < sitesList1.getEstado().size(); i++) 
    { 
     if(!estado1.contains(sitesList1.getEstado().get(i))) 
      { 

      estado1.add(sitesList1.getEstado().get(i)); 
        Collections.sort(estado1); 

      } 

使用をトリックの下に使用したが、2番目の項目からソートstatrするどのようにタイトルで最初の項目を含めてソート全体の配列リストしていますスピナー...

final ArrayList<String> estado1 = MainMenu.barrio1; 
    final Spinner estado11 = (Spinner) findViewById(R.id.Spinner04); 
    ArrayAdapter<String> adapterbarrio = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, estado1) 

      estado11.setAdapter(adapterbarrio); 
+1

1. **あなたはすべての反復でソートを呼び出す?? !!! ?? ** 2(答)単にあなたが(2番目の項目からソート)することはできません。..最初の項目がwithspace(fx。 "")または " - "で始まる場合は、常に最初の項目が削除されます。最初の項目が削除され、tempに格納され、残りがソートされ、最初の位置にtemp項目が挿入されますwith(0、temp) – Selvin

答えて

1

一つの方法は、あなたのタイトルを除いた部分リストを返します

estado1.subList(1,estado1.size()-1); 

このようArrayListのを分割することです。

1

バブルソートを使用してください。インデックス= 1で開始!

final ArrayList<String> estado1; 
for(int i=1; i<estado1.size() ; i++) { 
    for(int c=i; c<estado.size() ; c++) { 
      if(estado1.get(i).compareTo(estado1.get(c))) 
      { 
       String temp = estado1.get(i); 
       estado1.remove(i); 
       estado1.add(i, estado1.get(c)); 
       estado1.remove(c); 
       estado1.add(c, temp); 
      } 
    } 
} 

PS:非常に悪いパフォーマンス

+0

あなたは 'set'を使うことができます。それは内部アレイのシフトを避け、より良い方法を実行します。大きなリストの場合は、とにかくマージソートをお勧めします。 – Knickedi

+0

@Knickediあなたは-1でしたか?私は意図的に 'PS:very bad performance'を追加したので、これは悪いプログラミングだということを知ることができますか? –

+0

いいえ、私ではありませんでした。私はそれを述べていただろう。私は通常、正当な理由を残さずに決して投票しません。あなたのメモが追加されたので、あなたの回答は完璧です;-) – Knickedi

2

なぜタイトルを削除しないでください/リストのソート後にタイトルを追加するだけですか?

2

これはどう

List<String> list = new ArrayList<String>(); 
    // Fill list 
    String title = list.get(0); 
    list.remove(0); 
    Collections.sort(list); 
    list.add(0, title); 
関連する問題