2016-01-26 4 views
-1

Я разрабатываю приложение, которое берет некоторые фотографии и сохраняет его на SD-карте устройства в данной папке.Нужно получить путь от изображения внутри ScrollView

Позже эти изображения представлены внутри LinearLayout (Horizontal) внутри ScrollView. Мне нужен способ удалить изображение из папки SD, если пользователь делает это долго. Это мой код:

После взятия фото внутри onActivityResult, я называю этот метод:

public void updatePhotos(){ 
    hScrollView.removeAllViews(); 
    LinearLayout lLayout=new LinearLayout(ctx); 
    lLayout.setOrientation(LinearLayout.HORIZONTAL); 
    hScrollView.addView(lLayout); 
    File targetDirector = new File(targetPath); 
    File[] files = targetDirector.listFiles(); 
    for (File file : files){ 
     lLayout.addView(insertPhoto(file.getAbsolutePath())); 
    } 
} 

public View insertPhoto(String path){ 
    Bitmap bm = decodeSampledBitmapFromUri(path, 220, 220); 

    LinearLayout layout = new LinearLayout(ctx); 
    layout.setLayoutParams(new LinearLayout.LayoutParams(250, 250)); 
    layout.setGravity(Gravity.CENTER); 

    ImageView imageView = new ImageView(ctx); 
    imageView.setLayoutParams(new LinearLayout.LayoutParams(220, 220)); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setImageBitmap(bm); 
    imageView.setOnLongClickListener(new View.OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 

      //LongClick logic here 


      return false; 
     } 
    }); 

    layout.addView(imageView); 
    return layout; 
} 

Как мог достичь своей цели? Спасибо.

+0

Лучше вы выбираете ListView вместо LinearLayout. Легко получить позицию из адаптера или массива с помощью ListView. Doc: http://developer.android.com/reference/android/widget/ListView.html Руководство: http://developer.android.com/guide/topics/ui/layout/listview.html – Fabi755

ответ

0

Вы можете использовать теги для данного случая:

public View insertPhoto(String path){ 
     Bitmap bm = decodeSampledBitmapFromUri(path, 220, 220); 

     LinearLayout layout = new LinearLayout(ctx); 
     layout.setLayoutParams(new LinearLayout.LayoutParams(250, 250)); 
     layout.setGravity(Gravity.CENTER); 

     ImageView imageView = new ImageView(ctx); 
     imageView.setLayoutParams(new LinearLayout.LayoutParams(220, 220)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setImageBitmap(bm); 
     imageView.setTag(path); 
     imageView.setOnLongClickListener(new View.OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 

       //LongClick logic here 
        System.out.println(v.getTag()) 
        File file= new File(android.os.Environment.getExternalStorageDirectory() 
        + v.getTag()); 
        if(file.exists()) file.delete(); 

       return false; 
      } 
     }); 

Решить вашу проблему?

+0

Я был о чтобы добавить ответ с тем же самым решением (я нашел его после некоторого исследования), но у вас впереди :) Спасибо Фабио. – Fustigador

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