2016-03-27 15 views
1

Aşağıdaki sorun var. Fragman sınıfımdan bir Recyclerview dolduruyorum. Şimdiye kadar her şey çalışıyor. Ancak, uygulamamı test ettiğimde ve nüfusun geri dönüştürücüsünü yukarı ve aşağı kaydırırken, her bir öğenin içeriği a.k.a'yı değiştirir ve geri dönüştürülürler ...Recyclerview öğelerini aynı konumda nasıl saklarsınız?

Kaydırma sonrasında her öğenin konumunu nasıl kaydedebilirim ve içeriğini aynı konuma geri yükleyebilirim?

Herhangi bir öneriniz var mı?

+1

Adaptör kodunuzu gösterin. – Irfan

+0

Bize geri dönüş izninin uygulanmasını göstermeniz gerekiyor. – CodyEngel

+0

İlk önce –

cevap

1

İyi bir soru, bu sizin cevabınız holder.setIsRecyclable (false). Eğer RecyclerView kullanmanın bütün mesele kalıntıları, hangi kaydırma gibi daha görünümleri yaratacak şekilde

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.product_recycle_buyer_list_item, parent, false); 
    MyViewHolder holder = new MyViewHolder(view); 

    holder.setIsRecyclable(false); 

    return holder; 
} 
+0

Bu sorun çözüldü! Çok teşekkür ederim ahbap! Hayat kurtarma! –

0

setIsRecyclable(false), kötü bir çözümdür. Sadece daha fazla CPU almakla kalmaz, aynı zamanda ne kadar çok kaydırma yapar ve yeni öğeleri görürseniz, o kadar çok bellek kullanır. Bitmap'ler büyük miktarlarda bellek alma eğiliminde olduğundan, bu daha da kötüsüdür.

Bunun yerine yapmanız gereken, görünümü sahip olması gereken verilere bağlamak için onBindViewHolder uygulamaktır. Ayrıca, bitmapler kullanılması durumunda önbellek kullanın.

Yapmak istediğim farklı bir soruyu soran here yaptığım örnek bir koda bakabilirsiniz.

İlgili konular