2016-04-05 7 views
-1

Ich lerne Android und neu zu Android. Ich mag mehrere Bilder aus der Galerie holen und dann will sie in gridview zeigen und für die i UniversalImageLoader Bibliothek 1.9.5Im Import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; SimpleImageLoadingLIstneer wird nicht gefunden

ist mit UniversalImageLoader Bibliothek verwendet ich die folgende Abhängigkeit in build.gradle App Modul hinzugefügt

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

und dann kopiert und eingefügt i die Lösung von einem Tutorial

in dieser meine mainactivity wie folgt, in der i universal Bild loader Bibliothek

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. 
012 verwendet

Ich suchte nach der Lösung des obigen Problems, konnte aber keine finden. Ich suchte so viel ich kann, aber nicht die Lösung bekommen.

Thanks in advance 

Antwort

1

Versuchen mit:

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

statt:

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

Als Tipp auf das nächste Mal so etwas wie dies in Ihrem Code geschehen, den Namen der Klasse schreiben nur überall in Ihrem Klasse und dann drücken Sie Alt und geben Sie den Namen der Klasse ein und Sie können so etwas sehen, um die Klasse automatisch zu importieren:

enter image description here

+0

Dank, der den Fehler –

+0

lösen Aber jetzt gibt es mir aus Speicherfehler Ich habe alles, was in docs wie Verringerung der Gewindegröße genannt wird, zu entfernen cacheInMemory() und verwendet .bitmapConfig (Bitmap.Config.RGB_565) und .imageScaleType (ImageScaleType.EXACTLY), aber es gibt mir immer noch den Fehler –

+0

Wenn Sie eine andere Frage haben, öffnen Sie eine neue Frage mit allen Informationen, die Sie zur Verfügung stellen können. Überprüfen Sie diesen Link: http://StackOverflow.com/Help/How-to-ask, und vergessen Sie nicht, die Antwort zu bewerten –

0

Der Fehler selbst ist selbsterklärend. Ihre Einfuhr von build.gradle,

com.nostra13.universalimageloader: universal-Bild-loader: 1.9.5

finden nicht erforderlich Klassendatei - com.nostra13.universalimageloader.core .assist.SimpleImageLoadingListener, bedeutet dies, dass entweder das Paket der Datei geändert wird oder die Datei selbst entfernt wird.

Wenn Sie manuell die universal-image-loader-1.9.3.jar suchen und herunterladen, können Sie sehen, dass es in core Ordner keine Datei mit dem angegebenen Namen, aber es ist zu core/listener Ordner verschoben.

Also in Ihrem Code müssen Sie nur aktualisieren,

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

Dank, dass die Erlöser –

+0

lösen Aber jetzt gibt es mir nicht genügend Speicherfehler, den ich tat alles, was in Docs erwähnt wird, wie Thread-Größe reduzieren, CacheInMemory() entfernen und .bitmapConfig (Bitmap.Config.RGB_565) und .imageScaleType (ImageScaleType.EXACTLY), aber es gibt immer noch einen Fehler –