Android:网格视图中的复选框问题

时间:2015-11-26 08:35:45

标签: android

我正在尝试从网格视图中删除多个选定的图像。图像被正确删除但复选框出现,因为它是按钮点击事件的网格视图。可以有人帮我解决此问题。提前谢谢。

这是我的代码删除

class GridView_Adapter extends BaseAdapter {

        private LayoutInflater mInflater;
        SparseBooleanArray mSparseBooleanArray;
        public GridView_Adapter() {
            mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mSparseBooleanArray = new SparseBooleanArray();
        }

            public ArrayList<String> getCheckedItems() {
            ArrayList<String> mTempArry = new ArrayList<String>();

                for(int i=0;i<fileName.size();i++) {
                if(mSparseBooleanArray.get(i)) {
                    mTempArry.add(fileName.get(i));
                }}
            return mTempArry;
        }

        public int getCount() {
            return fileName.size();
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent)
        {
           ViewHolder holder;
            if (convertView == null)
            {
                holder = new ViewHolder();
                convertView = mInflater.inflate(R.layout.add_post_grid_item_layout, parent , false);
                holder.image = (ImageView) convertView.findViewById(R.id.image);
                holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);
                convertView.setTag(holder);
            }
            else
            {
                holder = (ViewHolder) convertView.getTag();
            }

            Bitmap myBitmap = BitmapFactory.decodeFile(fileName.get(position));
            holder.image.setImageBitmap(myBitmap);
            final int pos = position;

            holder.checkbox.setTag(position);
            holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
                 {
                     mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
                     int pos = (Integer) buttonView.getTag();
                     if (!buttonView.isChecked())
                     {
                         picsName.remove((String) fileName.get(pos));
                     }
                     else if(buttonView.isChecked())
                     {
                         if (!picsName.contains((String) fileName.get(pos)))
                         {
                             picsName.add((String) fileName.get(pos));
                         }
                     }
                     notifyDataSetChanged();
                 }
             });


            return convertView;
        }

               class ViewHolder
        {
            ImageView image;
            CheckBox checkbox;
            int id;
        }
    }

这是删除按钮

imgDeleteImagesFromGallery = (ImageView) findViewById(R.id.imgDeleteImage);
        if(gridAdapter.getCheckedItems()!= null )
        {
            selectedItems = gridAdapter.getCheckedItems();
            if(selectedItems != null )
        {
            imgDeleteImagesFromGallery.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {


                    if(selectedItems.size() > 0)
                    {
                        Toast.makeText(AddPost.this, "Total photos selected: "+selectedItems.size(), Toast.LENGTH_SHORT).show();
                        Log.e(AddPost.class.getSimpleName(), "Selected Items: " + selectedItems.toString());

                        Iterator it = picsName.iterator();
                        while (it.hasNext())
                        {
                            strFilePath = it.next().toString();
                            Log.e("strFilePath ", " strFilePath = " + strFilePath);
                            File file = new File(strFilePath);
                            if (file.exists())
                            {
                                boolean result = file.delete();
                                Log.e("File deleted ", " From classnkk_images = " + result);
                            }
                        }

                        gridAdapter.notifyDataSetChanged();
                        int countImg = gridAdapter.getCount();
                        textTotalImages.setText(Integer.toString(countImg));


                    }
                }
            });
        }

        }

0 个答案:

没有答案