Галерея Android отображает выбранное изображение - PullRequest
0 голосов
/ 13 июля 2011

В следующем коде я пытаюсь отобразить изображение, выбранное в галерее. Но я получаю изображение Android по умолчанию, а не изображение, которое я сохранил. Что я делаю не так, как решить эту проблему ...

package HGallery.com;

import HGallery.com.R;
import HGallery.com.HGalleryActivity.ImageAdapter;
import android.app.Activity;
import android.os.Bundle;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;

import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class HGalleryActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final ImageView iv=(ImageView) findViewById(R.id.imageView1);
    iv.setVisibility(View.INVISIBLE);



    Gallery g = (Gallery) findViewById(R.id.gallery);
    g.setAdapter(new ImageAdapter(this));

    g.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            //Toast.makeText(HGalleryActivity.this, "here", Toast.LENGTH_SHORT).show();
            //Toast.makeText(HGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();

            iv.setVisibility(View.VISIBLE);
            Drawable d=getResources().getDrawable(R.drawable.icon);
            //Toast.makeText(HGalleryActivity.this, ""+d, Toast.LENGTH_SHORT).show();
            iv.setImageDrawable(d);     


        }
    });



}
public class ImageAdapter extends BaseAdapter {
    int mGalleryItemBackground;
    private Context mContext;

    private Integer[] mImageIds = {
            R.drawable.sample_1,
            R.drawable.sample_2,
            R.drawable.sample_3

    };

    public ImageAdapter(Context c) {
        mContext = c;
        TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
        mGalleryItemBackground = a.getResourceId(
                R.styleable.HelloGallery_android_galleryItemBackground, 0);
        a.recycle();
    }

    public int getCount() {
        return mImageIds.length;
    }

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

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView i = new ImageView(mContext);

        i.setImageResource(mImageIds[position]);
        i.setLayoutParams(new Gallery.LayoutParams(150, 100));
        i.setScaleType(ImageView.ScaleType.FIT_XY);
        i.setBackgroundResource(mGalleryItemBackground);

        return i;
    }

/*  public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
        return null;
    }*/
}
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello"
/>
  <Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ImageView  android:id="@+id/imageView1" android:layout_width="320px" android:layout_height="250px"></ImageView>
<!-- <ImageView android:layout_width="wrap_content" android:id="@+id/imageView2" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView>-->

Ответы [ 2 ]

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

Пожалуйста, перейдите по этой ссылке Лучший пример Камбуз .Я надеюсь, что полезно для вас ...

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

Метод внутри вашего ImageAdapter с именем public Object getItem(int position) следует изменить, чтобы он возвращал соответствующий mImageIds[] с помощью аргумента position.Затем, внутри onItemClick, вы можете позвонить parent.getItemAtPosition(position), чтобы получить идентификатор ресурса.

Если вы хотите использовать этот метод для вещей, отличных от идентификаторов, вы можете написать свой собственный метод get (который я 'd вызвать getResourceId) и вызвать ((ImageAdapter)parent.getAdapter()).getResourceId(position)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...