Popupwindow with image

Crunch picture Crunch · May 18, 2011 · Viewed 27.1k times · Source

I need to be able to click an imgview in a listview, which should open a popup showing the image fullsize. I've managed to implement the clicklistener, but keep failing at creating the popup, even with just a testing textview.

In my mainActivity oncreate i run

lstView.setAdapter(new CustomListViewAdapter(this, dataFromDBListe, 0, orientation));

In my CustomListVievAdapter, where i have my clicklistener (which can display a toast at the moment) I have the following getView():

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.custom_row, null);
        holder = new ViewHolder();
        holder.title = (TextView) convertView.findViewById(R.id.title);
        holder.prev = (TextView) convertView.findViewById(R.id.prevNrDate);
        holder.prevTitle = (TextView) convertView.findViewById    (R.id.prevTitle);
        holder.next = (TextView) convertView.findViewById(R.id.nextNrDate);
        holder.nextTitle = (TextView) convertView.findViewById     (R.id.nextTitle);
        holder.picture = (ImageView) convertView.findViewById    (R.id.showPic);
        holder.prevFast = (TextView) convertView.findViewById(R.id.prev);
        holder.nextFast = (TextView) convertView.findViewById(R.id.next);
        holder.linearLayout = (LinearLayout) convertView.findViewById    (R.id.imgLay);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    testSort(holder);
    final Show item = showList.get(position);
    holder.title.setText(item.getTitle());
    holder.prev.setText(item.getPrevNr() + " - " + item.getPrevDate());
    holder.prevTitle.setText(item.getPrevTitle());
    holder.next.setText(item.getNextNr() + " - " + item.getNextDate());
    holder.nextTitle.setText(item.getNextTitle());

    if(pic) {
        holder.linearLayout.setVisibility(8);
    } if(compact) {
        holder.linearLayout.setVisibility(8);
        holder.prevTitle.setVisibility(8);
        holder.nextTitle.setVisibility(8);
    } else {
//          new DownloadImageTask(holder.picture).execute(item.getShowId());
        String path;
        if(ih.checkImg(item.getShowId())) {
            path = PATH + item.getShowId() + ".jpg";
        } else {
            path = "bla";
        }
//          DrawableManager dm = new DrawableManager();
//          dm.fetchDrawableOnThread(path, holder.picture);
        imageDownloader.download(path, holder.picture);
//          ih.download(path, holder.picture);
    }

    holder.picture.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    Toast.makeText(context, "IMG clicked",
                            Toast.LENGTH_LONG).show();
                    //Show popup with full image of the clicked small img.
                }
            });

    return convertView;
}

I tried most of the commonly linkedto solutions in here for popupwindow, but can't make it work.

Answer

Zoombie picture Zoombie · May 18, 2011

Create custom-dialog and pass image in it....

private void loadPhoto(ImageView imageView, int width, int height) {

        ImageView tempImageView = imageView;


        AlertDialog.Builder imageDialog = new AlertDialog.Builder(this);
        LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);

        View layout = inflater.inflate(R.layout.custom_fullimage_dialog,
                (ViewGroup) findViewById(R.id.layout_root));
        ImageView image = (ImageView) layout.findViewById(R.id.fullimage);
        image.setImageDrawable(tempImageView.getDrawable());
        imageDialog.setView(layout);
        imageDialog.setPositiveButton(resources.getString(R.string.ok_button), new DialogInterface.OnClickListener(){

            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }

        });


        imageDialog.create();
        imageDialog.show();     
    }

custom_fullimage_dialog.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root" android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:padding="10dp">
    <ImageView android:id="@+id/fullimage" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </ImageView>

    <TextView android:id="@+id/custom_fullimage_placename"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:textColor="#FFF">
    </TextView>
</LinearLayout>