0

私はアンドロイドで音楽プレーヤーアプリを構築しています。 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

答えて

0

あなたは、あなたのカーソルを取得する方法を示していないが、あなたは使用することができます

MediaStore.Audio.Media.TITLE 

または完全なパスをお持ちの場合

String trackname = fullpath.substring(fullpath.lastIndexOf("/") + 1, fullpath.length()); 
関連する問題