I am trying to display a list of songs from storage on my TracksActivity tab from my TabHost. I followed a tutorial on how to display songs from storage to a ListView but after running it doesnt show anything on the ListView and there are no errors on the Log. Pardon me if it's a silly mistake I'm still a noob.
What I have tried:
TracksActivity:
public class TracksActivity extends Activity {
private static final int MY_PERMISSION_REQUEST = 1;
ArrayList<String> arrayList;
ListView trackList;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tracks_layout);
if (ContextCompat.checkSelfPermission(TracksActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(TracksActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
ActivityCompat.requestPermissions(TracksActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
} else {
ActivityCompat.requestPermissions(TracksActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
}
} else {
doStuff();
}
}
public void doStuff() {
trackList = findViewById(R.id.trackList);
arrayList = new ArrayList<>();
getMusic();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
trackList.setAdapter(adapter);
trackList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long I) {
}
});
}
public void getMusic() {
ContentResolver contentResolver = getContentResolver();
Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor songCursor = contentResolver.query(songUri, null,null,null,null);
if (songCursor != null && songCursor.moveToFirst()) {
int songTitle = songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int songArtist = songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songLocation = songCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
do {
String currentTitle = songCursor.getString(songTitle);
String currentArtist = songCursor.getString(songArtist);
String currentLocation = songCursor.getString(songLocation);
arrayList.add("Title: " + currentTitle + "\n" + "Artist: " + currentArtist + "\n" + "Location: " + currentLocation);
} while (songCursor.moveToNext());
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MY_PERMISSION_REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(TracksActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
doStuff();
}
} else {
Toast.makeText(this,"No permission granted", Toast.LENGTH_SHORT).show();
finish();
}
return;
}
}
}}
tracks_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView
android:id="@+id/trackList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />