作成しようとしている mp3 プレーヤーのコードを書いています。私はプロジェクトを開始したばかりで、SD カードにあるすべての mp3 ファイルを読み取って表示できるようにしたいと考えています。ダイレクトパス方式は使いたくない 私が書いたこのコードは、すべての mp3 ファイルを収集しますが、唯一の問題は、それらが画面に表示されないことです。アプリは空白の画面を表示しますが、クラッシュしません。
私は家庭教師から助けとアドバイスを受け、ArrayAdapter を使用して結果を表示するように言われましたが、それを表示するための助けが見つかりません。誰かが助けてくれれば、それは素晴らしいことです。
onCreate メソッドのコードは次のとおりです。
ListView list;
Cursor cursor;
int columnIndex;
int count;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//list = (ListView) findViewById(R.id.list);
//A array is created that display the 3 fields
String[] displayMusic = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.TITLE};
//the cursor displays all of the audio in the sd card, just to limit to .mp3 files now
cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, displayMusic, null, null, null);
//this is the loop that gather all of the .mp3 files
int pos = 1;
ArrayList<String> listOfMp3s = new ArrayList<String>();
while (cursor.moveToNext())
{
if(cursor.getString(pos).endsWith("mp3"))
{
listOfMp3s.add(cursor.getString(pos));
}
}
String[] displayFields = new String[] {MediaStore.Audio.Media.DISPLAY_NAME};
int[] displayViews = new int[] {android.R.id.text1};
//setListAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, displayFields, displayViews);
ArrayAdapter<String> musicAdapter = new ArrayAdapter<String>(getBaseContext(), R.layout.list_songs, listOfMp3s);
//list.setAdapter(listOfMp3s);
}