2013-08-19 67 views
0

我有一個列表行佈局中具有SmartImageView自定義列表視圖(http://loopj.com/android-smart-image-view/爲列表視圖中的ImageView設置圖像產生奇怪的結果

我想設置每個SmartImageView上的每一行的圖片,下面是我的列表適配器。

private class MyListAdapter extends ArrayAdapter<ListItem> { 

     private ArrayList<ListItem> items; 

     public MyListAdapter(Context context, int textViewResourceId, ArrayList<ListItem> items) { 
       super(context, textViewResourceId, items); 
       this.items = items; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
       View v = convertView; 
       if (v == null) { 
        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        v = vi.inflate(R.layout.item_row_layout, null); 
       } 
       ListItem o = items.get(position); 
       if (o != null) { 
         TextView title = (TextView) v.findViewById(R.id.ptitle); 
         TextView site = (TextView) v.findViewById(R.id.site); 
         TextView price = (TextView) v.findViewById(R.id.price); 
         SmartImageView img = (SmartImageView) findViewById(R.id.smallimage); 

         Typeface font = Typeface.createFromAsset(getAssets(), "Asap-Regular.ttf"); 
         site.setTypeface(font); 
         title.setTypeface(font); 
         price.setTypeface(font); 

         if (title != null) { 
          title.setText(o.getTitle());        
         } 
         if (site != null) { 

           site.setText("Supplier Name"); 

         } 
         if (price != null) { 
          price.setText("£"+ String.valueOf(o.getPrice()));        
         } 
         if (img != null){ 
          String url = o.getImage(); 
          img.setImageUrl(url); 
         } 





       } 
       return v; 
     } 

    } 

所有其他的東西都設置好了,例如標題,價格等,但圖像不能正確設置。

如果有一個以上的首個項目將獲得最後一個項目像一個以上的列表項,其餘沒有任何圖像集。 雖然列表中有一個項目,但它根本沒有得到圖像集。

如果您需要更多的代碼或信息的一定要告訴我!

+0

設置img.setBackgroundDrawable(null);當img爲null時應該解決你的問題。 – Tarun

+0

@塔倫的評論是正確的解決方案,而不是市場下面正確答案。這與回收有關。它正在重複使用這些觀點。 – dannyroa

+0

@dannyroa下面的答案爲我工作,所以被標記爲這樣 –

回答

0

你應該嘗試DOIG的findViewById您SmartImageView通過調用

SmartImageView img = (SmartImageView) v.findViewById(R.id.smallimage);

這樣,你得到的SmartImageView是在列表中的每個視圖,否則,它不會搶一個特定於你的列表視圖中的那一行。