2015-11-20 42 views
1

我用在我的項目使用下面的XML一個ListView:畢加索和列表視圖中持有與可變高度

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


    <com.makeramen.roundedimageview.RoundedImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/background_imageView" /> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <!-- Content --> 
    </LinearLayout> 

</FrameLayout> 

適配器

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

    if (convertView == null) { 
     convertView = _inflater.inflate(R.layout.mylayout, null); 
     cell = new Cell(convertView); 
     convertView.setTag(cell); 
    } else { 
     cell = (Cell) convertView.getTag(); 
    } 

    // ... Some stuff with other views ... 
    Picasso.with(_context).load("http://...").fit().centerCrop().into(cell.backgroundImageView); 

    return convertView; 
} 

static class Cell { 
    @Bind(R.id.background_imageView) ImageView backgroundImageView; 
    // Other views 

    public Cell(View view){ 
     ButterKnife.bind(this, view); 
    } 
} 

這是結果,當我滾動:

enter image description here

它看起來像畢加索使用醇的高度調整圖像d Holder.imageView。 當我不使用持有者時,我沒有這個問題。

你有什麼想法?

回答

1

它看起來像包裹畢加索呼叫到cell.backgroundImageView.post()做的工作:

cell.backgroundImageView.post(new Runnable() { 
       @Override 
       public void run() { 
        Picasso.with(_context).load("http://...").fit().centerCrop().into(cell.backgroundImageView); 
       } 
      }); 

一旦視圖顯示/調整大小並能應用正確的措施對ImageView的畢加索被調用。

+0

這似乎工作得很好 - upvoted,你是如何發現這一點的? –