2016-07-13 4 views
0

У меня возникла проблема с удалением изображения из imageView, чтобы удалить его из действия, а также из внешнего носителя расположения файла.Удаление изображения из imageview

Попытка использования с 3-х дней и пока не найдена. Мне нужно применить удаления код кнопки в этом файле Java

public class FullScreenImageAdapter extends PagerAdapter { 

private Activity _activity; 
private ArrayList<String> _imagePaths; 
private LayoutInflater inflater; 

// constructor 
public FullScreenImageAdapter(Activity activity, 
     ArrayList<String> imagePaths) { 
    this._activity = activity; 
    this._imagePaths = imagePaths; 
} 

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

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == ((RelativeLayout) object); 
} 

@Override 
public Object instantiateItem(ViewGroup container, final int position) { 
    TouchImageView imgDisplay; 
    Button btnClose, deleteButton; 

    inflater = (LayoutInflater) _activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, 
      container, false); 

    imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay); 
    btnClose = (Button) viewLayout.findViewById(R.id.btnClose); 
    deleteButton = (Button) viewLayout.findViewById(R.id.btndelete); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Bitmap bitmap = BitmapFactory.decodeFile(_imagePaths.get(position), 
      options); 
    imgDisplay.setImageBitmap(bitmap); 

    // close button click event 
    btnClose.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      _activity.finish(); 
     } 
    }); 




    deleteButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 




      String myFile = "/FakeNewsMaker/File.jpg"; 

      // File file = new File(imagePath); 
     //  if(file.exists()) 
      //  file.delete(); 

     } 
     }); 





    ((ViewPager) container).addView(viewLayout); 

    return viewLayout; 
} 






protected void startActivity(Intent createChooser) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    ((ViewPager) container).removeView((RelativeLayout) object); 

} 
} 
+0

Надеюсь, вы добавили эту строку в свой манифест и какую версию для Android вы используете? Marshmallow ?, и я надеюсь, что путь, который вы даете, - это верный. – Drv

+0

Да, я добавил все разрешения –

ответ

4

Просто установить растровое изображение, чтобы null как это -

imgDisplay.setImageBitmap(null); 
+0

Ответ на ответ и ответ, если это помогло –

2

можно удалить в ImageFile, как это.

public void DeleteFile(String fullPath, int position) { 

    try { 
     File sdCardRoot = Environment.getExternalStorageDirectory(); 
     Log.w("SDCardRoot", "" + sdCardRoot); 
     File yourDir = new File(sdCardRoot, "/YourFolderName"); 
     if (!yourDir.exists()) { 
      yourDir.mkdirs(); 
      Log.w("DashBordAct DirName:", "" + yourDir); 
     } 

     if (yourDir.isDirectory()) { 
      File[] content = yourDir.listFiles(); 
      for (int i = 0; i < content.length; i++) { 
       if (content[i].toString().contains(fullPath)) { 
        boolean success = content[i].delete(); 
        if (!success) { 
         Log.w("file", "not deleted); 
        } else { 
         Log.w("file", "deleted"); 
         _imagePath.remove(position); 
         notifyItemRemoved(position); 

        } 
       } 
      } 
     } 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

и установить этот метод в слушателе как Кнопка удаления этого:

deleteButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String myFile = "/FakeNewsMaker/File.jpg"; 
      DeleteFile(imagePath, getAdapterPosition) //or myFile. 
     } 
     }); 

, а также установить разрешение в манифесте.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

Это выглядит так: void является недопустимым типом для переменной DeleteFile @ sagar-chavada –

+0

ну, это функция .. просто скопируйте мой метод DeleteFile на end of full screenImageAdapter class –

+0

Я сделал, но показывая, что ошибка –

0

Чтобы удалить из раствора ImageView @Narendra Sorathiya прекрасно, если вы также хотите удалить его из хранилища, то используйте комбинацию.

deleteButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 

      imgDisplay.setImageBitmap(null); 
      String myFile = v.getTag().toString(); 

      File file = new File(myFile); 
      if(file.exists()) 
       file.delete(); 
      } 
     }); 

Update:

deleteButton = (Button) viewLayout.findViewById(R.id.btndelete); 
// add below line after deleteButton 
deleteButton.setTag(_imagePaths.get(position)); 

А затем получить Tag, когда кнопка удаления нажата как этот

String myFile = v.getTag().toString(); 

Я обновить код в предыдущем разделе.

+0

найти File.jpg? Это будет автогенерированный путь? –

+0

@AshwaniSharma проверяет обновленный ответ. –

0

Вы можете использовать,

imgView.setImageResource(0); 

или

imgView.setImageResource(android.R.color.transparent); 

или

imgView.setImageBitmap(null); 
imgView.destroyDrawingCache(); 

Я надеюсь, что это работает для Вас!

Смежные вопросы