user3684678
user3684678

Reputation:

Change background colour of image on selection in GridView

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

Answers (2)

akshay7692
akshay7692

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

Pradeep PK
Pradeep PK

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

Related Questions