2017-12-23 11 views
1

私はリストビューを持っていますが、曲は含まれていますが、アルファベット順に並べ替えるとその配置は変更されましたが、それを置く?私のコードです。私のリストビューをアルファベット順に整理しようとしています

final ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory()); 
    items = new String[mySongs.size()]; 

    for (int i = 0; i < mySongs.size(); i++) { 
    items[i] = mySongs.get(i).getName().toString().replace(".mp3", "").replace(".wav", ""); 
      } 

     final CustomList adp = new CustomList(MainActivity.this, items, imageId); 
    adp.sort(new Comparator<String>() { 
     @Override 
     public int compare(String lhs, String rhs) { 
      return lhs.compareTo(rhs); 
     } 
    }); 
      lv.setAdapter(adp); 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
        startActivity(new Intent(getApplicationContext(), Player.class).putExtra("pos", position).putExtra("songlist", mySongs)); 
        overridePendingTransition(R.anim.anime_enter, R.anim.anime_exit); 

    } 
    }); 

public ArrayList<File> findSongs(File root) { 
    ArrayList<File> al = new ArrayList<File>(); 
    File[] files = root.listFiles(); 
    for (File singleFile : files) { 
     if (singleFile.isDirectory() && singleFile.isHidden()) { 
      al.addAll(findSongs(singleFile)); 
     } else { 
      if (singleFile.getName().endsWith(".mp3") || singleFile.getName().endsWith(".wav")) { 
        al.add(singleFile); 
      } 
     } 
    } 
    return al; 
} 

ありがとう!

+0

あなたはどういう意味ですか: 'アイテム選択はまだ古いレイアウトを使用していますか? ' –

+0

配置は変更されましたが、クリックされても以前の位置に戻ります –

答えて

0

あなたはリストitemsをソートしているとのonClickあなたは.putExtra("songlist", mySongs)

を渡しているのでoClick上の同じリストオブジェクトを渡します。

+0

同じオブジェクトをどのように渡すことができますか?mySongsはArrayList です。mySongを渡さないとPlayer.javaは失敗します。 –

+0

私はそれを行うことができます:D。ありがとうございました! –

関連する問題