2014-01-14 54 views
0

我有一個允許添加文本並通過imgur上傳圖片的審閱系統。 當我顯示審查時,圖片顯示兩次,我不明白爲什麼。spannable edittext中的圖片顯示兩次

這裏是代碼的一部分:

public class ReviewListAdapter extends BaseAdapter { 
... 
    public View getView(int position, View convertView, ViewGroup parent) { 
    .... 
     ViewHolder holder; 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.list_item, null); 
     holder = new ViewHolder(convertView); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
      ... 

    if (text != null) { 

     int begin = text.indexOf("[img]"); 
     int end = text.indexOf("[/img]"); 
     if (begin != -1 && end!=-1 && begin<end) { 
      String imgUrl = text.subSequence(begin + 5, end).toString(); 
      imgUrl = imgUrl.substring(0,imgUrl.length()-4)+"m"+imgUrl.substring(imgUrl.length()-4, imgUrl.length()); 
      Log.e("IMG", imgUrl); // imgUrl == http://i.imgur.com/AL4Em6cm.jpg 

      startSignal = new CountDownLatch(1); 
      new GetImage().execute(imgUrl); 
      try { 
       startSignal.await(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      // We should have the picture in the Drawable : myPicture 
      SpannableStringBuilder ssb = new SpannableStringBuilder(text); 

      Bitmap pic = Utils.drawableToBitmap(myPicture); 
      ssb.setSpan(new ImageSpan(pic), begin, end + 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
      holder.textView.setText(ssb, BufferType.SPANNABLE); 
     }else{ 
      holder.textView.setText(text); 
     } 


    } 

我也把私有類的getImage(裏面的同一個文件)

private class GetImage extends AsyncTask<String, Void, Void> { 

    @Override 
    protected Void doInBackground(String... params) { 

     URL url; 
     boolean isPicture = false; 

     try { 
      if (!params[0].equals("")) 
       isPicture = true; 

      if (isPicture) 
       url = new URL(params[0]); 
      else 
       url = new URL(icon); 

      Bitmap mIcon1 = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
      if (isPicture) 
       myPicture = new BitmapDrawable(ctx.getResources(), mIcon1); 
      else 
       myIcon = new BitmapDrawable(ctx.getResources(), mIcon1); 

      startSignal.countDown(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

我的目錄佈局(list_item.xml)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

    <LinearLayout 
     android:id="@+id/ll1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="5dp" 
      android:layout_marginRight="5dp" 
      android:contentDescription="thumb"/> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_marginTop="5dp" 
       android:id="@+id/author_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/time" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/author_name" 
       android:layout_gravity="center" 
       android:paddingRight="8dp" 
       android:textSize="12sp" /> 
     </RelativeLayout> 
    </LinearLayout> 

<TextView 
    android:id="@+id/texto" 
    android:layout_below="@id/ll1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
/> 

</RelativeLayout> 

我的照片作爲可擴展內容插入到文本視圖中

回答

0

我有一個類似的問題,因爲你的。 ImageSpan在特定條件下顯示兩次。 Here is the link to my question。我發現如果setBound寬於某個寬度,圖片會顯示兩次。儘管你的代碼不涉及setBound調用。