Reputation:
I have created a gridView of images.i am trying to change background colour of image on selection in the following code.But no change occurs on selecting an image.
gridView = (GridView)rootView.findViewById(R.id.gridView);
customGridAdapter = new GridViewAdapter(getActivity(), R.layout.row_grid, getData());
gridView.setAdapter(customGridAdapter);
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
//Toast.makeText(TeamFragment.this, position + "#Selected",
// Toast.LENGTH_SHORT).show();
count=position;
gridView.setBackgroundColor(Color.argb(125,75,236,90));
/*int currentPic = position;
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);*/
}
});
GridViewAdapter
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.imageTitle = (TextView) row.findViewById(R.id.text);
holder.image = (ImageView) row.findViewById(R.id.image);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
row.setBackgroundColor(Color.RED);
ImageItem item = data.get(position);
holder.imageTitle.setText(item.getTitle());
holder.image.setImageBitmap(item.getImage());
return row;
}
Upvotes: 1
Views: 1723
Reputation: 601
Inside getView(...) method in your GridViewAdapter, you can set OnClickListener for ImageView as follows,
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView== null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView= inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.imageTitle = (TextView) convertView.findViewById(R.id.text);
holder.image = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
convertView.setBackgroundColor(Color.RED);
ImageItem item = data.get(position);
holder.imageTitle.setText(item.getTitle());
holder.image.setImageBitmap(item.getImage());
final View row = convertView;
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
row.setBackgroundColor(Color.yourColor);
}
});
return row;
}
Don't forget to declare variable row as final so it can be accessed in anonymous inner class View.OnclickListener.
Upvotes: 2
Reputation: 61
It looks like you are setting background color for whole gridView in the item selection. You should call getView() method using Adpater and set the color.
Upvotes: 0