2016-04-17 12 views
0

Ich versuche zu zeigen <img> Tags in JSON-String und ich mit der akzeptierte Antwort in this question aber Android Studio beschwert sich „nicht lösen Symbol urlDrawableWarum erhalte ich in dieser Klasse

„kann nicht Symbol urlDrawable lösen“

Bitte kann mir jemand sagen, warum dies geschieht und wie man es beheben?

UILImageGetter

import android.content.Context; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.text.Html; 
import android.view.View; 
import android.widget.TextView; 
import com.nostra13.universalimageloader.core.ImageLoader; 
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; 


public class UILImageGetter implements Html.ImageGetter{ 
    Context c; 
    TextView conatiner; 
    urlDrawable; 

    public UILImageGetter(View textView, Context context) { 
     this.c = context; 
     this.conatiner = (TextView) textView; 
    } 

    @Override 
    public Drawable getDrawable(String source) { 
     urlDrawable = new UrlImageDownloader(c.getResources(), source); 
     urlDrawable.drawable = c.getResources().getDrawable(R.drawable.default_thumb); 

     ImageLoader.getInstance().loadImage(source, new SimpleListener(urlDrawable)); 
     return urlDrawable; 
    } 

    private class SimpleListener extends SimpleImageLoadingListener { 
     UrlImageDownloader mUrlImageDownloader; 

     public SimpleListener(UrlImageDownloader downloader) { 
      super(); 
      mUrlImageDownloader= downloader; 
     } 

     @Override 
     public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
      int width = loadedImage.getWidth(); 
      int height = loadedImage.getHeight(); 

      int newWidth = width; 
      int newHeight = height; 

      if (width > conatiner.getWidth()) { 
       newWidth = conatiner.getWidth(); 
       newHeight = (newWidth * height)/width; 
      } 

      if (view != null) { 
       view.getLayoutParams().width = newWidth; 
       view.getLayoutParams().height = newHeight; 
      } 

      Drawable result = new BitmapDrawable(c.getResources(), loadedImage); 
      result.setBounds(0, 0, newWidth, newHeight); 

      mUrlImageDownloader.setBounds(0, 0, newWidth, newHeight); 
      mUrlImageDownloader.mDrawable = result; 

      conatiner.setHeight((conatiner.getHeight() + result.getIntrinsicHeight())); 
      conatiner.invalidate(); 
     } 

    } 

    private class UrlImageDownloader extends BitmapDrawable { 
     public Drawable mDrawable; 

     public UrlImageDownloader(Resources resources, String filepath) { 
      super(resources, filepath); 
      mDrawable = new BitmapDrawable(resources, filepath); 
     } 

     @Override 
     public void draw(Canvas canvas) { 
      if (mDrawable != null) { 
       mDrawable.draw(canvas); 
      } 
     } 
    } 
} 

Antwort

1

Sie haben urlDrawable keinen Typ zugewiesen. Dieser Teil des Codes enthält den Fehler:

public class UILImageGetter implements Html.ImageGetter{ 
    Context c; 
    TextView conatiner; 
    urlDrawable; 

Versuchen Sie folgendes:

public class UILImageGetter implements Html.ImageGetter{ 
    Context c; 
    TextView conatiner; 
    UrlImageDownloader urlDrawable; 
+0

In welchem ​​ersetzen Methode sollte ich das tun? – Roseyk

+0

direkt über dieser Zeile: 'public UILImageGetter (View textView, Kontextkontext) {' – iamkaan

+0

Oben in der Klasse, nachdem die öffentliche Klasse UILImageGetter Html.ImageGetter {'implementiert hat, haben Sie drei Variablen. Der untere. – ajohnston777

0

Java ist eine strongly typed language, was bedeutet, dass alle Variablen als eines Typs deklariert werden müssen.

Da Sie keinen Typ für urlDrawable angeben, versteht der Compiler nicht, dass Sie eine Variable deklarieren.

einfach

urlDrawable; 

mit

UrlImageDownloader urlDrawable; 
+0

Sollte ich das für alle Instanzen von 'urlDrawable' oder nur die erste tun? – Roseyk

+0

Sie müssen dies für jede Variable des Typs 'URLImageDownloader' tun, die Sie deklarieren. Ich sehe, dass Sie es bereits für 'UrlImageDownloader mUrlImageDownloader;' zum Beispiel tun. Natürlich müssen Sie dies nur tun, wenn Sie [eine Variable deklarieren] (http://java.about.com/od/understandingdatatypes/a/declaringvars.htm), nicht wenn Sie es verwenden! – BadCash

Verwandte Themen