-1

Ok i have the program running all i need is advice on how to get it to display a name for each photo in the toast when someone clicks on it. Right now the msg shows Family photo of (Number showing position of item in array) I want to to say Family photo of (family members name) how can i go about doing this below is my code.

package com.example.personalphoto;

import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
 Integer[] Family = {R.drawable.ed, R.drawable.eddie2, R.drawable.fenrir, R.drawable.george, R.drawable.gwendi, R.drawable.marylou, R.drawable.tonda, R.drawable.wayne,};
 ImageView pic;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  GridView gr = (GridView)findViewById(R.id.gridView1);
  final ImageView pic= (ImageView)findViewById(R.id.imgLarge);
  gr.setAdapter(new ImageAdapter(this));
  gr.setOnItemClickListener(new OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    Toast.makeText(getBaseContext(), "Family photo of " + (arg2 + 1), Toast.LENGTH_SHORT).show();
    pic.setImageResource(Family[arg2]);
    
   }
  });
 }
 public class ImageAdapter extends BaseAdapter{
  private Context context;
 public ImageAdapter(Context c) {
   // TODO Auto-generated constructor stub
  context=c;
  }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return Family.length;
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return 0;
 }

 @Override
 public View getView(int arg0, View arg1, ViewGroup arg2) {
  // TODO Auto-generated method stub
  pic = new ImageView(context);
  pic.setImageResource(Family[arg0]);
  pic.setScaleType(ImageView.ScaleType.FIT_XY);
  pic.setLayoutParams(new GridView.LayoutParams(120,120));
  return pic;
 }
 }
}

1 Answers1

0

First of all

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

to

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return Family[position];
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

secondary :

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
    // TODO Auto-generated method stub
    pic = new ImageView(context);
    pic.setImageResource(Family[arg0]);
    pic.setScaleType(ImageView.ScaleType.FIT_XY);
    pic.setLayoutParams(new GridView.LayoutParams(120,120));
    return pic;
}

to

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
    // TODO Auto-generated method stub
    ImageView view;
    if(arg1 == null) {
            view= new ImageView(context);
            view.setImageResource(Family[arg0]);
            view.setScaleType(ImageView.ScaleType.FIT_XY);
            view.setLayoutParams(new GridView.LayoutParams(120,120));
    } else {
            view = (ImageView) arg1;
            view.setImageResource(Family[arg0]);
            view.setScaleType(ImageView.ScaleType.FIT_XY);
            view.setLayoutParams(new GridView.LayoutParams(120,120));
    }
    return view;
}

Additionally read about ViewHolder pattern and this.

About your answer

I want to to say Family photo of (family members name) how can i go about doing this below is my code.

You need implement a structure that contains a photo and photo description, like an

public class FamilyInfo {
    public int resourceId;// your image 
    public String description;// Your family member name description.
}

And use in your app. What about using - so i have no patience here to explain how to do that. Sorry.

Community
  • 1
  • 1
Sergey Shustikov
  • 13,329
  • 9
  • 57
  • 110