Change background colour of image on selection in GridView

不想你离开。 提交于 2020-01-05 08:29:51

问题


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;
    }

回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/24910477/change-background-colour-of-image-on-selection-in-gridview

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!