图像存储和元数据(13)

以下代码指定想要返回的列,它必须是字符串数组的形式。在下面的代码中将这个数组传递给managedQuery方法。

String[] columns = { Media.DATA, Media._ID, Media.TITLE, 

Media.DISPLAY_NAME };

cursor = managedQuery(Media.EXTERNAL_CONTENT_URI, columns, null, null, 

null);

我们将需要知道从Cursor对象获取数据的每个列的索引。在此示例中,从Media.DATA切换到MediaStore.Images.Media.DATA。这仅仅是为了说明它们是相同的。Media.DATA仅仅是可以使用的简写形式,因为有一条包含它的import语句:android.provider.MediaStore. Images.Media。

fileColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

titleColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.

Media.TITLE);

displayColumn= cursor.getColumnIndexOrThrow(MediaStore.Images.Media.

DISPLAY_NAME);

运行查询并获得一个结果Cursor对象之后,调用该对象上的moveToFirst方法,以确保它包含结果。

if (cursor.moveToFirst()) {

//titleTextView.setText(cursor.getString(titleColumn));

titleTextView.setText(cursor.getString(displayColumn));

imageFilePath = cursor.getString(fileColumn);

bmp = getBitmap(imageFilePath);

// 显示图像

imageButton.setImageBitmap(bmp);

}

然后,为imageButton指定一个新的onClickListener,其调用Cursor对象上的moveToNext方法。它将遍历结果集,获取并显示返回的每幅图像。

imageButton.setOnClickListener( 

new OnClickListener() {

public void onClick(View v) {

if (cursor.moveToNext()) 

读书导航