2010-07-12 57 views
0

的ID我可以加載列表下面的代碼需要得到的AudioFile的android系統

String[] projection = new String[] { 
    Audio.Media._ID, 
    Audio.Media.DATA, 
    Audio.Media.DISPLAY_NAME}; 

     audioCursor = this.managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, 
      projection, null, null, Audio.Media.DISPLAY_NAME + " ASC"); 
     startManagingCursor(audioCursor); 

     String[] columnsToMap = new String[] {Audio.Media.DISPLAY_NAME}; 
     int[] mapTo = new int[] {R.id.text1}; 

     ListAdapter mAdapter = new SimpleCursorAdapter(this, 
      R.layout.song_item , audioCursor, columnsToMap, mapTo); 
     this.setListAdapter(mAdapter); 

,並在onListItemClick我能得到的文件名這樣

protected void onListItemClick(ListView l, View v, int position, long id) { 
    String DisplayName; 

    DisplayName =(String) ((TextView) v).getText(); // get name to compare 
    Toast.makeText(this,DisplayName, Toast.LENGTH_SHORT).show(); 

但我需要的是頂部的原始Audio.Media._ID號碼。如何從onListItemClick中檢索這個數字?

回答

0

你在做壞設計。

不應該從視圖中獲取值。您將不得不將光標跳到position並使用遊標中的值。 id參數將保持記錄的_ID

if (audioCursor.moveToPosition(position)) { 
    String DisplayName; 
    DisplayName=audioCursor.getString(audioCursor.getColumnIndex(Audio.Media.DISPLAY_NAME)); 

} 
+0

哦是啊?那麼我的設計比你想象的要糟得多。我的計劃是採取該ID號碼,然後通過Audio.Media重新搜索以獲取Audio.Media.DATA!你的回答告訴我如何直接獲取DATA參數。謝謝 – 2010-07-12 14:06:06