我正在尝试从网格视图中删除多个选定的图像。图像被正确删除但复选框出现,因为它是按钮点击事件的网格视图。可以有人帮我解决此问题。提前谢谢。
这是我的代码删除
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));
}
}
});
}
}