2016-03-19 16 views

cevap

1

Bazı günler önce aynı şeyi yapıyordum. ImageGetter kullanarak metin görünümünde html görüntüleniyordu. Ama önerilen sonucu vermiyordu. Öyleyse Jsoup libaray'ı kullandım ve elemanları ayıklayıp Textvew'da görüntüledim ve img etiketi geldiğinde görüntüyü UIL evrensel görüntü libarary kullanarak Imageview görüntülemekteyim. Peki bu libaray, görüntüleri önbelleğe alma seçeneğine sahiptir. Sadece html dizgisini önbelleğe almanız ve ardından jsoup mizanpajının yanı sıra UIL işlenecek olan ile birlikte sınıflandırma sınıfına aktarmanız gerekir.

public class PostContentHandler { 
Context context; 
String content; 
LinearLayout linearLayout; 
public PostContentHandler(Context context, String content , LinearLayout linearLayout){ 
    this.context=context; 
    this.content=content; 
    this.linearLayout=linearLayout; 

} 

public void setContentToView(){ 
    List<String> p = new ArrayList<>(); 
    List<String> src = new ArrayList<>(); 
    Document doc = Jsoup.parse(content); 

    Elements elements = doc.getAllElements(); 

    for(Element element :elements){ 
     Tag tag = element.tag(); 
     if(tag.getName().matches("h[1-6]{1}")){ 
      String heading = element.select(tag.getName().toString()).text(); 
      TextView textView = new TextView(context); 
      textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      textView.setTextSize(20); 
      textView.setText(heading); 
      textView.setPadding(5, 0, 5, 0); 
      textView.setTextColor(R.color.black); 
      linearLayout.addView(textView); 
     } 

     if(tag.getName().equalsIgnoreCase("p")){ 
      element.select("img").remove(); 
      String body= element.html(); 
      TextView textView = new TextView(context); 
      textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      textView.setText(Html.fromHtml(body)); 
      textView.setTextColor(R.color.black); 
      textView.setPadding(10,0,10,0); 
      linearLayout.addView(textView); 
      p.add(body); 
     } 
     if (tag.getName().equalsIgnoreCase("img")){ 
      String url = element.select("img").attr("src"); 


      final ImageView imageView = new ImageView(context); 
      imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      ImageLoader imageLoader = ImageLoader.getInstance(); 
      imageLoader.displayImage(url, imageView, new SimpleImageLoadingListener() { 
       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        super.onLoadingComplete(imageUri, view, loadedImage); 
        int height=loadedImage.getHeight(); 
        imageView.getLayoutParams().height=getScreenWidth(); 
        imageView.setAdjustViewBounds(true); 
        imageView.requestLayout(); 

       } 

       @Override 
       public void onLoadingStarted(String imageUri, View view) { 
        super.onLoadingStarted(imageUri, view); 
       } 
      }); 

      linearLayout.addView(imageView); 
      src.add(url); 
     } 

    } 
} 
public static int getScreenWidth() { 
    return Resources.getSystem().getDisplayMetrics().widthPixels; 
} 
} 
+0

Bu işlevi nasıl arayabilirim, html dizesini bu işleve nasıl iletebilirim? Maalesef Android Programlamada yeniyim. –

+0

Görüntüyü görüntülemek için görüntüyü kullanın. not textview –

+0

Geri bildiriminiz için teşekkür ederiz. Sonunda kodunuzu çözüyorum. Ancak, imageLoader.displayImage() satırında sözdizimi hatası var. Bu hata neden oldu: java.lang.IllegalStateException: ImageLoader, –

0

İşte kodum. Ben deneyin ve hata ayıklama, kod onLoadingFailed() için gitti gösterir ve onLoadingComplete() gitmez. Neden olduğuna dair hiçbir fikrim yok.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    linearLayout = (LinearLayout)findViewById(R.id.linearLayout1); 
    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .cacheOnDisc(true).cacheInMemory(true) 
      .imageScaleType(ImageScaleType.EXACTLY) 
      .displayer(new FadeInBitmapDisplayer(100)).build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      getApplicationContext()) 
      .defaultDisplayImageOptions(defaultOptions) 
      .memoryCache(new WeakMemoryCache()) 
      .discCacheSize(10 * 1024 * 1024).build(); 

    ImageLoader.getInstance().init(config); 
    setContentToView(); 
} 

public void setContentToView(){ 
    List<String> p = new ArrayList<>(); 
    List<String> src = new ArrayList<>(); 
    Document doc = Jsoup.parse(content); 
    Elements elements = doc.getAllElements(); 

    for(Element element :elements){ 
     Tag tag = element.tag(); 
     if(tag.getName().matches("h[1-6]{1}")){ 
      String heading = element.select(tag.getName().toString()).text(); 
      TextView textView = new TextView(this); 
      textView.setText(Html.fromHtml(heading)); 
      textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      linearLayout.addView(textView); 
     } 


     if(tag.getName().equalsIgnoreCase("p")){ 
      element.select("img").remove(); 
      String body= element.html(); 
      TextView textView = new TextView(this); 
      textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      textView.setText(Html.fromHtml(body)); 
      this.linearLayout.addView(textView); 
      p.add(body); 
     } 


     if (tag.getName().equalsIgnoreCase("img")){ 
      String url = element.select("img").attr("src"); 
      final ImageView imageView = new ImageView(this); 
      imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      ImageLoader imageLoader = ImageLoader.getInstance(); 
      imageLoader.displayImage(url, imageView, new SimpleImageLoadingListener() { 
       @Override 
       public void onLoadingStarted(String imageUri, View view) { 
        super.onLoadingStarted(imageUri, view); 

       } 

       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        super.onLoadingComplete(imageUri, view, loadedImage); 
        int height=loadedImage.getHeight(); 
        imageView.getLayoutParams().height=getScreenWidth(); 
        imageView.setAdjustViewBounds(true); 
        imageView.requestLayout(); 
       } 

       @Override 
       public void onLoadingCancelled(String imageUri, View view) { 
        super.onLoadingCancelled(imageUri, view); 
       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
        super.onLoadingFailed(imageUri, view, failReason); 
       } 
      }); 

      linearLayout.addView(imageView); 
      src.add(url); 
     } 
    } 
} 

public static int getScreenWidth() { 
    return Resources.getSystem().getDisplayMetrics().widthPixels; 
} 
+0

@Zeeshan Shabbir İşte benim kodum –