2011-06-23 53 views
0

我试图从SD卡中将图像显示到图库中,然后在图库中选择图像将其显示在较大的ImageView中。我已经成功实现了库(请参阅下面的代码),但在使用游标和String []一段时间后,我还没有能够弄清楚如何使用OnItemClickListener显示在ImageView中选择的图像...我的代码在下面:如何在ImageView中显示来自光标的图像? - Android

import java.io.File; 
import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.res.TypedArray; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.util.Base64; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.Gallery; 
import android.widget.ImageView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.Toast; 


public class Send extends Activity { 


    private Cursor cursor; 
    private int columnIndex; 


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


     final String[] projection = {MediaStore.Images.Thumbnails._ID}; 

     cursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
       projection, null, null, MediaStore.Images.Thumbnails.IMAGE_ID); 

     columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); 

     final ImageView imageView = (ImageView) findViewById(R.id.imageView10); 
     imageView.setImageResource(R.raw.blackinscreen); 


     final Gallery sdcardImages = (Gallery) findViewById(R.id.gallery10); 
     sdcardImages.setAdapter(new ImageAdapter(this)); 

     sdcardImages.setOnItemClickListener(new OnItemClickListener() 
     { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) { 


      } 

     }); 

    } 


    private class ImageAdapter extends BaseAdapter { 

     private Context context; 
     private int itemBackground; 

     public ImageAdapter(Context localContext) { 
      context = localContext; 

      TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
      itemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0); 
      a.recycle(); 
     } 

     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); 
       cursor.moveToPosition(position); 
       int imageID = cursor.getInt(columnIndex); 
       picturesView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID)); 
       picturesView.setScaleType(ImageView.ScaleType.FIT_XY); 
       picturesView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 
       picturesView.setBackgroundResource(itemBackground); 
      } 
      else { 
       picturesView = (ImageView)convertView; 
      } 
      return picturesView; 
     } 
    } 
} 

xml顶部有一个画廊,下面有一个图片显示。使用此代码,我如何将所选图像从库中显示到ImageView中?感谢您的时间。

回答

0

我建议您到地方保存你的图像标识上的适配器
然后你就可以得到您的画廊的适配器上的OnItemClickListener然后得到相应的项目

ImageAdapter imageAdapter = (ImageAdapter) arg0.getAdapter(); 

ImageAdapter imageAdapter = sdcardImages.getAdapter(); 

然后你可以得到你以前存储的imageID(你必须调整你的getItem方法):

int imageID = imageAdapter.getItem(position); 

那么你很好改变你的ImageView源:)

相关问题