How to retain the checkbox state on scroll of gridview in android

瘦欲@ 提交于 2019-12-06 08:24:29

Please modify your code.
1) We have to use ViewHolder class for encapsulation.
2) We have to set tag values of checkbox so when view recreate at that time we can take values from tag.

 public AdapterGridViewImage(Context context,
                        ArrayList<HashMap<String, String>> arraylist) {
                    this.context = context;
                    data = arraylist;
                    //imageLoader = new ImageLoader(context);
                    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            }

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

            @Override
            public Object getItem(int position) {
                return null;
            }

            @Override
            public long getItemId(int position) {
                return 0;
            }

            public View getView(final int position, View convertView, ViewGroup parent) 
            {
                final ViewHolder holder;
                if(convertView==null)
                {
                    holder=new ViewHolder();
                    convertView = inflater.inflate(R.layout.grid_view_image_item, parent, false);
                    holder.flag = (ImageView) convertView.findViewById(R.id.flag);
                    holder.ch_bx=(CheckBox) convertView.findViewById(R.id.ch_bx);
holder.ch_bx.setTag(false);
                    convertView.setTag(holder);
                }
                else
                {
                    holder=(ViewHolder)convertView.getTag();
                }

                resultp = data.get(position);

                if((Boolean)holder.ch_bx.getTag())
                {
                    holder.ch_bx.setChecked(true);
                }
                else
                {
                    holder.ch_bx.setChecked(false);
                }

                holder.ch_bx.setOnClickListener(new OnClickListener()
                {

                    @Override
                    public void onClick(View v)
                    {
                        if(holder.ch_bx.isChecked())
                        {
                            holder.ch_bx.setTag(true);
                        }
                        else
                        {
                            holder.ch_bx.setTag(false);
                        }
                    }
                });
                //Picasso.with(context).load("http://10.0.2.2:3009/buffet_items/".trim()+resultp.get("item_image").trim()).into(flag);

                 Picasso.with(context)
                  .load("http://10.0.2.2:3009/buffet_items/".trim()+resultp.get("item_image").trim())
                  .resizeDimen(R.dimen.wanted_size,R.dimen.wanted_size).centerCrop().into(holder.flag);

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