Как отобразить изображение с курсора в ImageView?- Android - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь отобразить изображения с SD-карты в галерее, а затем, выбрав изображение в галерее, отображает его в увеличенном ImageView. Я успешно реализовал галерею (см. Код ниже), но после работы с курсором и String [] в течение некоторого времени я не смог выяснить, как отобразить изображение, выбранное в ImageView с помощью OnItemClickListener ... мой код ниже :

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? Спасибо за ваше время.

1 Ответ

0 голосов
/ 13 июля 2011

Я рекомендую вам хранить ваш imageID где-нибудь на вашем адаптере.
Затем вы можете получить адаптер вашей галереи на OnItemClickListener, а затем получить соответствующий элемент

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

или

ImageAdapter imageAdapter = sdcardImages.getAdapter();

Затем вы можете получить ранее сохраненный imageID (вам нужно адаптировать метод getItem):

int imageID = imageAdapter.getItem(position);

Тогда вы можете изменить свой источник ImageView:)

...