私はアンドロイドで音楽プレーヤーアプリを構築しています。 listItemをクリックすると、対応するソングが再生され、ソングの名前がシードバーの上に、idが "selectedItem"のTextViewに表示されます。しかし、データバインディングはMediaCursorAdapter.classで行われ、MediaStore.MediaColumns.DATAを文字列としてMainActivity.javaクラスのonListItemClick()メソッドに返します。ここでは、現在のソングの名前がストリングに設定されます。しかし、これはかなり悪く見えるアプリの曲の全体のパスを示しています。 MainActivity.javaクラスのDISPLAY_NAMEを取得する方法や、このパスを短くしてアプリであまり見栄えのないようにする方法はありますか?android MediaStoreのDATAを使用してDISPLAY_NAMEを取得
MainActivity.java
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
currentFile = (String) v.getTag();
startPlay(currentFile);
}
MediaCursorAdapter.java
@Override
public void bindView(View view, Context context, Cursor cursor) {
//TextView title = (TextView) view.findViewById(R.id.title_name);
TextView displayName = (TextView) view.findViewById(R.id.display_name);
TextView duration = (TextView) view.findViewById(R.id.duration);
String nameOfTheSong = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));
nameOfTheSong = nameOfTheSong.substring(0,nameOfTheSong.length()-4);
displayName.setText(nameOfTheSong);
//title.setText(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.TITLE)));
long durationInMS = Long.parseLong(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION)));
double durationInMin = ((double)durationInMS/1000.0)/60.0;
BigDecimal bigDecimal = new BigDecimal(durationInMin);
durationInMin = bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue();
duration.setText(""+durationInMin);
//SETTING THE PATH WHICH IS THEN USED IN onListItemClick OF THE MAINACTIVITY.JAVA CLASS
view.setTag(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)));
}
Githubのリンク:https://github.com/vishwabhat19/PlayMusic.git