2016-01-24 104 views
0

我有一個列表,當一個項目是溢價,但尚未購買,我會在ImageView中應用一個過濾器。比較onBindViewHolder中的項目

問題是,當我啓動應用程序時,一切正常,但當我開始滾動時,其他itens也開始獲取灰色濾鏡。然後過濾器在everyline線上。

@Override 
    public void onBindViewHolder(ThemeViewHolder holder, int position) { 
     Tema t = temaList.get(position); 
     boolean comprado = bp.isPurchased(t.getSkuTema()); 
     holder.temaTexto.setText(t.getNomeTema()); 
     holder.temaIcone.setImageResource(t.getIconeTema()); 
     if(t.getIsPremium() != 0){ 
      Log.d("Adapter", "Posição: "+ position + " is Premium: " + t.getIsPremium()); 
      ColorMatrix matrix = new ColorMatrix(); 
      matrix.setSaturation(0); 
      ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); 
      holder.temaIcone.setColorFilter(filter); 
     } 
    } 

只有在 「isPremium = 0」 的位置< 6結果,我有10個項目。

我的日誌

01-24 14:22:45.048 17282-17282/llamaze.com.br.whattodraw D/Adapter: Posição: 7 is Premium: 1 
01-24 14:22:45.071 17282-17282/llamaze.com.br.whattodraw D/Adapter: Posição: 8 is Premium: 1 
01-24 14:22:45.117 17282-17282/llamaze.com.br.whattodraw D/Adapter: Posição: 9 is Premium: 1 

我做錯成才錯了嗎?

回答

1

A RecyclerView被稱爲是這樣,因爲它回收它的意見。

這就是說,滾動你溢價的意見將得到以及重複使用非優質行時。

所有你需要做的是落實else分支到您的if聲明,你刪除的過濾器,如果是非優質

+0

我可以呼籲「其他」只是爲了什麼都不做?任何想法? – Spotik

+0

不,您需要將顏色過濾器設置回其他塊中的默認值。 – RogueBaneling

+0

@Spotik'holder.temaIcone.setColorFilter(null)' – Karakuri