2013-10-08 53 views
-1

我在一個屏幕和gridview中有一個gridview我顯示所有的圖像存在於SDCard這工作正常。現在我想要做的是當我點擊任何gridview圖像時,它應該去下一個活動,並應該全屏顯示該特定圖像。我已經提到了一些其他的鏈接,並嘗試但沒有得到妥善解決。Android:gridview

public class Gallary_Images extends Activity { 

private Cursor cursor; 
private int columnIndex; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gallery_images); 

    // Set up an array of the Thumbnail Image ID column we want 
    String[] projection = { MediaStore.Images.Thumbnails._ID }; 
    // Create the cursor pointing to the SDCard 
    cursor = managedQuery(
      MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, 
      null, // Return all rows 
      null, MediaStore.Images.Thumbnails.IMAGE_ID); 
    // Get the column index of the Thumbnails Image ID 
    columnIndex = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); 

    GridView sdcardImages = (GridView) findViewById(R.id.gridView1); 
    sdcardImages.setAdapter(new ImageAdapter(this)); 

    // Set up a click listener 
    sdcardImages.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, 
       long id) { 
      Intent i = new Intent(getApplicationContext(), 
        ViewGallery_Photo.class); 
      i.putExtra("id", position); 
      startActivity(i); 
     } 
    }); 
} 

private class ImageAdapter extends BaseAdapter { 

    private Context context; 

    public ImageAdapter(Context localContext) { 
     context = localContext; 
    } 

    public int getCount() { 
     return cursor.getCount(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView picturesView; 
     if (convertView == null) { 
      picturesView = new ImageView(context); 
      // Move cursor to current position 
      cursor.moveToPosition(position); 
      // Get the current value for the requested column 
      int imageID = cursor.getInt(columnIndex); 
      // Set the content of the image based on the provided URI 
      picturesView.setImageURI(Uri.withAppendedPath(
        MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" 
          + imageID)); 
      picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
      picturesView.setPadding(8, 8, 8, 8); 
      picturesView 
        .setLayoutParams(new GridView.LayoutParams(100, 100)); 
     } else { 
      picturesView = (ImageView) convertView; 
     } 
     return picturesView; 
    } 
} 
} 

這是我的gridview類,我打電話給下一個活動。現在我不知道如何在下一個活動中獲得圖像。請幫助...

回答

0

,你必須嘗試的第一件事是認沽圖像的URI在你的意圖,這樣

intent.putExtra("imageUri", imageUri.toString()); 

其中imageUri是Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI「 「+ imageID));

,但在這之前,你必須知道你的圖像標識,所以整個代碼必須是這樣的

sdcardImages.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position,long id) { 
     Intent i = new Intent(getApplicationContext(),ViewGallery_Photo.class); 
     cursor.moveToPosition(position); 
     int imageID = cursor.getInt(columnIndex); 
     Uri imageUri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
     ""+ imageID)); 
     intent.putExtra("imageUri", imageUri.toString()); 
     startActivity(i); 
    } 
}); 
+0

謝謝您的回覆whizzzkey ...我會嘗試這個代碼,並讓你知道這是工作或不.. – InnocentKiller

0

試試如下: 添加在您的投影字符串的文件數據。

String[] columns = { MediaStore.Images.Media.DATA, 
       MediaStore.Images.Media._ID }; 
public void onItemClick(AdapterView<?> arg0, android.view.View v, 
      int position, long id) { 
     Intent i = new Intent(getApplicationContext(),ViewGallery_Photo.class); 

     cursor = managedQuery(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, 
       null, null, null); 
     final int dataColumnIndex = cursor 
       .getColumnIndex(MediaStore.Images.Media.DATA); 
     final int idColumIndex = actualimagecursor 
       .getColumnIndex(MediaStore.Images.Media._ID); 
     cursor.moveToPosition(position); 
     filename = cursor.getString(dataColumnIndex); 

     i.putExtra("imagePath", filename); 
     startActivity(i);