时间:2010-07-12 06:58:15

标签: android listadapter

我可以加载包含以下代码的列表

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?

中检索此数字

1 个答案:

答案 0 :(得分:0)

你的设计很差。

不应该从视图中获取值。您必须将光标跳到position并使用光标中的值。 id参数将保留记录的_ID

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

}
相关问题