2015-09-29 2 views
0

Я загружаю некоторые изображения в мой gridView из галереи, все работает отлично до сих пор. Я удаляю изображения, которые хочу получить из своего GridView, все работает нормально, но если я хочу снова загрузить после того, как просто удалю свои фотографии, в моем gridView будут показаны те же изображения, которые я только что удалил, и я не знаю, как я могу Исправьте это. Если я перезапущу все свое приложение, все снова отлично работает, но если я снова удалю несколько снимков, снова будет одна и та же проблема, и если я перезапущу только эту активность, ничего не меняется. Вот мой onActivityResult после того, как пользователь сделал ACTION_PICK:GridView Android загружает изображения

public void onActivityResult(int requestCode, int resultCode, Intent data) { 


    // get image from external storage 

    if (resultCode == RESULT_OK) { 
     if (requestCode == REQUEST_CODE_EXTERNAL_IMAGE) { 
      Uri uri = data.getData(); 
      InputStream inputStream; 



       OutputStream output; 
       // Find the SD Card path 
       File filepath = Environment.getExternalStorageDirectory(); 

       int count2 = 0; 
       SharedPreferences settings = getSharedPreferences("YOUR_PREF_NAME", 0); 
       count2 = settings.getInt("SNOW_DENSITY", 0); //0 is the default value 
       String paranteza1 = "("; 
       String paranteza2 = ")"; 
       int count1 = new File("/mnt/sdcard" + nameAlbum).listFiles().length; 
       count1 = count1 + 1; 
       String nameImage = "Wallpaper_" + count1 + ".jpg"; 
       for (int j = 0; j < listFile.length; j++) { 
        FileNameStrings[j] = listFile[j].getName(); 


        if (FileNameStrings[j].equals(nameImage)) { 
         nameImage = "Wallpaper_" + count1 + paranteza1 + count2 + paranteza2 + ".jpg"; 
         count2++; 
         settings = getSharedPreferences("YOUR_PREF_NAME", 0); 
         SharedPreferences.Editor editor = settings.edit(); 
         editor.putInt("SNOW_DENSITY", count2); 
         editor.commit(); 
         for (int i = 0; i < listFile.length; i++) { 
          FileNameStrings[i] = listFile[i].getName(); 
          if (FileNameStrings[i].equals(nameImage)) { 

           nameImage = "Wallpaper_" + count1 + paranteza1 + count2 + paranteza2 + ".jpg"; 
           count2++; 
           settings = getSharedPreferences("YOUR_PREF_NAME", 0); 
           editor = settings.edit(); 
           editor.putInt("SNOW_DENSITY", count2); 
           editor.commit(); 
          } 
         } 
        } 
       } 
       count2++; 
       File dir = new File(filepath.getAbsolutePath() 
         + nameAlbum); 

       // Retrieve the image from the res folder 


       // Create a name for the saved image 
       file = new File(dir, nameImage); 


       try { 
        inputStream = getContentResolver().openInputStream(uri); 
        Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
        output = new FileOutputStream(file); 

        // Compress into png format image from 0% - 100% 
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output); 
        output.flush(); 
        output.close(); 

       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

     } 


     if (!Environment.getExternalStorageState().equals(
       Environment.MEDIA_MOUNTED)) { 
      Toast.makeText(this, "Error! No SDCARD Found!", Toast.LENGTH_LONG) 
        .show(); 
     } else { 
      // Locate the image folder in your SD Card 
      file = new File(Environment.getExternalStorageDirectory() 
        + File.separator + nameAlbum); 

      if (file.isDirectory()) { 
       listFile = file.listFiles(); 
       // Create a String array for FilePathStrings 
       FilePathStrings = new String[listFile.length]; 
       // Create a String array for FileNameStrings 
       FileNameStrings = new String[listFile.length]; 

       for (int i = 0; i < listFile.length; i++) { 
        // Get the path of the image file 
        FilePathStrings[i] = listFile[i].getAbsolutePath(); 
        // Get the name image file 
        FileNameStrings[i] = listFile[i].getName(); 
        // Locate the GridView in gridview_main.xml 
        grid = (GridView) findViewById(R.id.gridview); 
        // Pass String arrays to LazyAdapter Class 
        adapter = new GridViewAdapter(AlbumActivity.this, FilePathStrings, FileNameStrings); 
        // Set the LazyAdapter to the GridView 
    grid.setAdapter(adapter); 
        adapter.notifyDataSetChanged(); 


       } 
      } 
     } 

Это мой код которым позволит мне удалить файлы

case R.id.action_delete: 

      File filepath = Environment.getExternalStorageDirectory(); 

      SparseBooleanArray checkedItemPositions = grid.getCheckedItemPositions(); 

      int itemCount = grid.getCount(); 


      for (int i = itemCount - 1; i >= 0; i--) { 
       if (checkedItemPositions.get(i)) { 

        File dir5 = new File(filepath.getAbsolutePath() 
          + nameAlbum + FileNameStrings[i]); 

        File file3 = new File(String.valueOf(dir5)); 
        deleted = file3.delete(); 
        deleteCache(this); 



       } 

ответ

0

я решить для себя, все время, когда я был d когда я загружал свои фотографии, я загружал с тем же именем в свой каталог, и GridView занимал одно и то же изображение, но только для изображения, если бы я щелкнул по риску, меня отправили бы на другой активность, где показывалась хорошая картина. В любом случае, теперь, когда я загружаю новые фото, я загружаю их, с другим именем, ни одно имя не совпадает! Для тех, кто был в той же проблеме, как я, я думаю, будет хороший совет!

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