user3217774
user3217774

Reputation: 73

click event for gridview images

I have a code for gridview which set images automatically on any devices. But the problem is that I want to open specific image in new activity but my images are stored in LayoutInflator. So please provide me some code for that.

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GridView gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new MyAdapter(this));
}

private class MyAdapter extends BaseAdapter
{
private List<Item> items = new ArrayList<Item>();
private LayoutInflater inflater;

public MyAdapter(Context context)
{
inflater = LayoutInflater.from(context);

items.add(new Item("Image 1", R.drawable.nature1));
items.add(new Item("Image 2", R.drawable.nature2));
items.add(new Item("Image 3", R.drawable.tree1));
items.add(new Item("Image 4", R.drawable.nature3));
items.add(new Item("Image 5", R.drawable.tree2));
}

@Override
public int getCount() {
return items.size();
}

@Override
public Object getItem(int i)
{
return items.get(i);
}

@Override
public long getItemId(int i)
{
return items.get(i).drawableId;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
View v = view;
ImageView picture;
TextView name;

if(v == null)
{
v = inflater.inflate(R.layout.gridview_item, viewGroup, 
v.setTag(R.id.picture, v.findViewById(R.id.picture));
v.setTag(R.id.text, v.findViewById(R.id.text));
}

picture = (ImageView)v.getTag(R.id.picture);
name = (TextView)v.getTag(R.id.text);

Item item = (Item)getItem(i);

picture.setImageResource(item.name.setText(item.name);

return v;
}

private class Item
{
final String name;
final int drawableId;
Item(String name, int drawableId)
{ 
this.name = name;
this.drawableId = drawableId;
}
}
}
}

This is my click event code in imageadapter activity.

public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Intent i = new Intent(this, FullImageActivity.class);
i.putExtra("src", position);
mactivity.startActivity(i);
}

This is my code for getting image in new activity that is FullImageActivity.

imageView = (ImageView) findViewById(R.id.full_image_view);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
int res = extras.getInt("src");
imageView.setImageResource(res);

}

Upvotes: 0

Views: 1137

Answers (1)

Dharani Kumar
Dharani Kumar

Reputation: 1981

 1. Create the instance for activity in your adapter class

    `Activity mactivity;`

 2. Pass the **activity instance** to you adapter constructor class *[public
    MyAdapter(Context context,Activity activty)]*. And store it in your adapter class.

    `public MyAdapter(Context context,Activity activity){
     inflater  = LayoutInflater.from(context);
     mactivity = activity;
    }`

 3. Set *onClickListner* for your image in *getView()*. And use the following code for click action

    `Intent mIntent = new Intent(this,newActivity.class);
     mIntent.putExtras(bundle);
     mactivty.startActivity(mIntent);`

Upvotes: 1

Related Questions