2016-04-05 4 views
-1

Je suis en train d'apprendre android et de nouveau à android. Je veux choisir plusieurs images de la galerie et que vous voulez les montrer dans gridview et que j'utilise la bibliothèque UniversalImageLoader 1.9.5In import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; SimpleImageLoadingLIstneer n'est pas trouvé

Utilisation UniversalImageLoader Library i ajouté la dépendance suivante dans le module d'application build.gradle

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 

puis i copié et collé la solution de certains tutoriel

dans ce mon MainActivity est comme suit dans lequel j'ai utilisé la bibliothèque universelle de chargeur d'image

package tainning.infotech.lovely.selectmultipleimagesfromgallery; 
    import java.util.ArrayList; 
    import android.content.Context;  
    import android.database.Cursor;  
    import android.graphics.Bitmap;  
    import android.os.Bundle;  
    import android.provider.MediaStore;  
    import android.util.Log;  
    import android.util.SparseBooleanArray;  
    import android.view.LayoutInflater;  
    import android.view.View;  
    import android.view.ViewGroup;  
    import android.view.animation.Animation;  
    import android.view.animation.AnimationUtils;  
    import android.widget.BaseAdapter;  
    import android.widget.CheckBox;  
    import android.widget.CompoundButton;  
    import android.widget.Toast;  
    import android.widget.CompoundButton.OnCheckedChangeListener;  
    import android.widget.GridView;  
    import android.widget.ImageView;  
    import com.nostra13.universalimageloader.core.DisplayImageOptions;  
    import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; 

    /** 
    * @author Paresh Mayani (@pareshmayani) 
    */ 
    public class MainActivity extends BaseActivity { 

     private ArrayList<String> imageUrls; 
     private DisplayImageOptions options; 
     private ImageAdapter imageAdapter; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.content_main); 

      final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; 
      final String orderBy = MediaStore.Images.Media.DATE_TAKEN; 
      Cursor imagecursor = managedQuery(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
        null, orderBy + " DESC"); 

      this.imageUrls = new ArrayList<String>(); 

      for (int i = 0; i < imagecursor.getCount(); i++) { 
       imagecursor.moveToPosition(i); 
       int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); 
       imageUrls.add(imagecursor.getString(dataColumnIndex)); 

       System.out.println("=====> Array path => "+imageUrls.get(i)); 
      } 

      options = new DisplayImageOptions.Builder() 
        .showStubImage(R.drawable.stub_image) 
        .showImageForEmptyUri(R.drawable.image_for_empty_url) 
        .cacheInMemory() 
        .cacheOnDisc() 
        .build(); 

      imageAdapter = new ImageAdapter(this, imageUrls); 

      GridView gridView = (GridView) findViewById(R.id.gridview); 
      gridView.setAdapter(imageAdapter); 
      /*gridView.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        startImageGalleryActivity(position); 
       } 
      });*/ 
     } 

     @Override 
     protected void onStop() { 
      imageLoader.stop(); 
      super.onStop(); 
     } 

     public void btnChoosePhotosClick(View v){ 

      ArrayList<String> selectedItems = imageAdapter.getCheckedItems(); 
      Toast.makeText(MainActivity.this, "Total photos selected: "+selectedItems.size(), Toast.LENGTH_SHORT).show(); 
      Log.d(MainActivity.class.getSimpleName(), "Selected Items: " + selectedItems.toString()); 
     } 

     /*private void startImageGalleryActivity(int position) { 
      Intent intent = new Intent(this, ImagePagerActivity.class); 
      intent.putExtra(Extra.IMAGES, imageUrls); 
      intent.putExtra(Extra.IMAGE_POSITION, position); 
      startActivity(intent); 
     }*/ 

     public class ImageAdapter extends BaseAdapter { 

      ArrayList<String> mList; 
      LayoutInflater mInflater; 
      Context mContext; 
      SparseBooleanArray mSparseBooleanArray; 

      public ImageAdapter(Context context, ArrayList<String> imageList) { 
       // TODO Auto-generated constructor stub 
       mContext = context; 
       mInflater = LayoutInflater.from(mContext); 
       mSparseBooleanArray = new SparseBooleanArray(); 
       mList = new ArrayList<String>(); 
       this.mList = imageList; 

      } 

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

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

       return mTempArry; 
      } 

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

      @Override 
      public Object getItem(int position) { 
       return null; 
      } 

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

      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 

       if(convertView == null) { 
        convertView = mInflater.inflate(R.layout.row_multiphoto_item, null); 
       } 

       CheckBox mCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox1); 
       final ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView1); 

       imageLoader.displayImage("file://"+imageUrls.get(position), imageView, options, new SimpleImageLoadingListener() { 
        @Override 
        public void onLoadingComplete(Bitmap loadedImage) { 
         Animation anim = AnimationUtils.loadAnimation(MainActivity.this,Animation.START_ON_FIRST_FRAME); 
         imageView.setAnimation(anim); 
         anim.start(); 
        } 
       }); 

       mCheckBox.setTag(position); 
       mCheckBox.setChecked(mSparseBooleanArray.get(position)); 
       mCheckBox.setOnCheckedChangeListener(mCheckedChangeListener); 

       return convertView; 
      } 

      OnCheckedChangeListener mCheckedChangeListener = new OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        // TODO Auto-generated method stub 
        mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked); 
       } 
      }; 
     } 

    } 




    but when i try to build the project it shows me the error following error 

    Error:(26, 53) error: cannot find symbol class SimpleImageLoadingListener 

    and also in following import statement 

    import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; 

    SimpleImageLoadingListener is underlined as red line. 
    and it says cannot find symbol SimpleImageLoadingListener . 

    The BaseActivity.java is following 

    import android.app.Activity; 

    import com.nostra13.universalimageloader.core.ImageLoader; 

    /** 
    * @author Paresh Mayani (@pareshmayani) 
    */ 
    public abstract class BaseActivity extends Activity { 

     protected ImageLoader imageLoader = ImageLoader.getInstance(); 

    } 

    The UilApplication.java is like following 

    package tainning.infotech.lovely.selectmultipleimagesfromgallery; 

    /** 
    * Created by student on 4/5/2016. 
    */ 

    import android.app.Application; 
    import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; 
    import com.nostra13.universalimageloader.core.ImageLoader; 
    import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; 

    /** 
    * @author Paresh Mayani (@pareshmayani) 
    */ 
    public class UILApplication extends Application { 

     @Override 
     public void onCreate() { 
      super.onCreate(); 

      // This configuration tuning is custom. You can tune every option, you may tune some of them, 
      // or you can create default configuration by 
      // ImageLoaderConfiguration.createDefault(this); 
      // method. 
      ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
        .threadPoolSize(3) 
        .threadPriority(Thread.NORM_PRIORITY - 2) 
        .memoryCacheSize(1500000) // 1.5 Mb 
        .denyCacheImageMultipleSizesInMemory() 
        .discCacheFileNameGenerator(new Md5FileNameGenerator()) 
        //.enableLogging() // Not necessary in common 
        .build(); 
      // Initialize ImageLoader with configuration. 
      ImageLoader.getInstance().init(config); 
     } 
    } 

    The manifest file is this 

    <?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="tainning.infotech.lovely.selectmultipleimagesfromgallery" > 

     <!-- Include following permission if you load images from Internet --> 
     <uses-permission android:name="android.permission.INTERNET" /> 
     <!-- Include following permission if you want to cache images on SD card --> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

     <application 
      android:allowBackup="true" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/app_name" 
      android:supportsRtl="true" 
      android:theme="@style/AppTheme" > 
      <activity 
       android:name=".MainActivity" 
       android:label="@string/app_name" 
       android:theme="@style/AppTheme.NoActionBar" > 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
     </application> 

    </manifest> 


    Build.gradle(Module:app) is like this 

    apply plugin: 'com.android.application' 

    android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.2" 

     defaultConfig { 
      applicationId "tainning.infotech.lovely.selectmultipleimagesfromgallery" 
      minSdkVersion 15 
      targetSdkVersion 23 
      versionCode 1 
      versionName "1.0" 
     } 
     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 
    } 

    dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
     testCompile 'junit:junit:4.12' 
     compile 'com.android.support:appcompat-v7:23.1.1' 
     compile 'com.android.support:design:23.1.1' 
     compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 
    } 



    Kindly help as soon as possible. 

J'ai cherché la solution du problème ci-dessus mais je n'ai pas pu en trouver. J'ai cherché autant que je peux mais n'ai pas obtenu la solution.

Thanks in advance 

Répondre

1

Essayez avec:

import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; 

à la place:

import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; 

Comme une pointe à quelque chose la prochaine fois que cela arrive dans votre code, écrivez le nom de la classe que partout dans votre classe, puis appuyez sur alt et entrez sur le nom de la classe et vous pouvez voir quelque chose comme ça pour importer automatiquement la classe:

enter image description here

+0

grâce qui permettent de résoudre l'erreur –

+0

Mais maintenant, il me donne de l'erreur de mémoire je l'ai fait tout ce qui est mentionné dans docs comme la réduction de la taille du fil, la suppression cacheInMemory() et utilisé .bitmapConfig (Bitmap.Config.RGB_565) et .imageScaleType (ImageScaleType.EXACTLY) mais il me donne toujours une erreur –

+0

Si vous avez une question différente, ouvrez une nouvelle question avec toutes les informations que vous pouvez fournir. Vérifiez ce lien: http://stackoverflow.com/help/how-to-ask, et n'oubliez pas d'évaluer la réponse qui vous est donnée –

0

L'erreur elle-même est explicite. Votre importation de build.gradle,

com.nostra13.universalimageloader: universel image chargeur: 1.9.5

ne trouve pas le fichier de classe requis - com.nostra13.universalimageloader.core .assist.SimpleImageLoadingListener, cela signifie que le package du fichier est modifié ou que le fichier lui-même est supprimé.

Si vous pouvez rechercher manuellement et télécharger le -chargeur universel image 1.9.3.jar, vous pouvez voir qu'il n'y a aucun fichier avec le nom spécifié dans core dossier, mais il est déplacé dans le dossier core/listener.

Donc, dans votre code que vous avez juste besoin de mettre à jour,

import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener 
+0

merci de résoudre le problème –

+0

Mais maintenant, ça me donne une erreur de mémoire tout ce qui est mentionné dans les documents comme la réduction de la taille du thread, la suppression de cacheInMemory() et l'utilisation de .bitmapConfig (Bitmap.Config.RGB_565) et .imageScaleType (ImageScaleType.EXACTLY) mais cela me donne toujours une erreur –