Listview не отображается на вкладках в моем tabhost
Я пытаюсь отобразить список песен из хранилища на вкладке TracksActivity с моего TabHost. Я следовал учебнику о том, как отображать песни из хранилища в ListView, но после запуска он ничего не показывает в ListView, и в журнале нет ошибок. Простите меня, если это глупая ошибка, но я все еще нуб.
Что я уже пробовал:
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" />
David Crow
Сколько элементов содержится в arrayList
- А что насчет этого adapter
Вызывается ли метод doStuff ()? Я не вижу try/catch
блоки в вашем коде. Это намеренно?