C# 如何在C编写的Android中声明和设置游标#

C# 如何在C编写的Android中声明和设置游标#,c#,android,xamarin,declare,C#,Android,Xamarin,Declare,我有这样一个代码: public List<Track> getAllSdCardTracks(Context context) { List<Track> tracks = new List<Track>(); Cursor c = context //this is the problem .getContentResolver() .query(MediaStore.Aud

我有这样一个代码:

public List<Track> getAllSdCardTracks(Context context) {
        List<Track> tracks = new List<Track>();

        Cursor c = context //this is the problem
            .getContentResolver()
            .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                new String[] { MediaStore.Audio.Media._ID,
                    MediaStore.Audio.Media.DATA,
                    MediaStore.Audio.Media.ARTIST,
                    MediaStore.Audio.Media.ALBUM,
                    MediaStore.Audio.Media.DURATION,
                    MediaStore.Audio.Media.DISPLAY_NAME,
                    MediaStore.Audio.Media.ALBUM_ID }, "1=1",
                null, null);
        if (c.moveToFirst()) {
            do {
                String mArtist = c
                    .getString(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
                String mTitle = c
                    .getString(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
                String mId = c.getString(c
                    .getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
                String mAlbumName = c
                    .getString(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
                String mAlbumID = c
                    .getString(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));

                String mPath = c
                    .getString(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
                long mDuration = c
                    .getLong(c
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
                String mFormattedDuration = DateUtils
                    .formatElapsedTime(mDuration / 1000);
                Track track = new SDTrack(mAlbumID, mAlbumName, mArtist, mId, mTitle, mPath , mFormattedDuration);
                tracks.add(track);
            } while (c.moveToNext());
            if (c != null)
                c.close();
        }

        return tracks;
    }
但我不知道该怎么办!!:/
谁能给我解释一下吗?!(请用c键入代码#我不能使用java)

您是否缺少using指令

编辑: 根据Xamarin的例子


您需要声明它
ICursor

是否缺少using指令

编辑: 根据Xamarin的例子


您需要声明它
ICursor

它应该相当简单:

        var cursor = context.ContentResolver.Query(
            MediaStore.Audio.Media.ExternalContentUri,
            new string[] 
            { 
                /* insert fields here */ 
            }, 
            "1=1",
            null, 
            null);

返回的“游标”将是ICursor。

它应该相当简单:

        var cursor = context.ContentResolver.Query(
            MediaStore.Audio.Media.ExternalContentUri,
            new string[] 
            { 
                /* insert fields here */ 
            }, 
            "1=1",
            null, 
            null);

返回的‘cursor’将是ICursor。

我问他,他说:“cursor”是一个Android类!我觉得它有点像“ListAdapter”!所以如果我错过了使用指令,那么哪个指令?!!据我所知,它应该是android.databaseIt不是,我尝试过,但它没有任何影响。这种用法似乎是针对java的,而不是针对C!我更新了我的答案,请看一下示例代码。我问他,他说:“Cursor”是一个Android类!我觉得它有点像“ListAdapter”!所以如果我错过了使用指令,那么哪个指令?!!据我所知,它应该是android.databaseIt不是,我尝试过,但它没有任何影响。这种用法似乎是针对java的,而不是针对C!我更新了我的答案,请看一下示例代码。
        var cursor = context.ContentResolver.Query(
            MediaStore.Audio.Media.ExternalContentUri,
            new string[] 
            { 
                /* insert fields here */ 
            }, 
            "1=1",
            null, 
            null);