2014-12-24 34 views
8

RecyclerView'un (ve zorunlu ViewHolder modelinin) tanıtımından önce, genellikle herhangi bir tıklama olayını /Fragment kullanarak setOnItemClickListener() kullanarak delege ediyorum. Şimdi (böylece görünümüne herhangi bir değişiklik içinde yapılmalıdır, Android için geliştirme yaparken esas bir "denetleyici" nesnesi olarak Activity/Fragment görüyorum.)RecyclerView - Tıklama olaylarını nerede kullanmalıyım?

, RecyclerView olarak gerçekten onun çocuklarına aynı şekilde davranmıyor ve bu setOnItemClickListener() (veya benzerleri) yöntemleri artık uygulanmadı - gerçekleşebilecek tıklama olaylarını nerede kullanmalıyım? Bilmiyorum .. ama bunları bir Adapter'da ele almak bana garip görünüyor.

Bunu nasıl yapmalıyız?

Şimdiden teşekkürler!

+0

Özel ViewHolder uygulamanızı OnClickListener – pskink

cevap

4

Her zaman yaptığımız gibi geri dönüştürücü görünümü için kendi görünümünüzü kendiniz oluşturun ve onBindView yönteminde, tıklatıcıyı tıkla işlemini gerçekleştirmek istediğiniz görünüme ayarlayın.

@Override 
public void onBindViewHolder(final ViewHolder viewHolder, int position) { 
viewHolder.mRelContent.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // perform ur click here 
     } 
    }); 
} 
+0

yapınız. Volodymyr'in cevabı, uzun basın etkinliklerini ele alması gerekmeyen listeler için harikadır, aksi takdirde, çalışmasını sağlamak için ciddi bir düzeltme yapılması gerekir. Sizinki uygulamak çok daha kolay. Teşekkürler! – ridsatrio

+0

Bu basit bir çözümdür, ancak bu ViewHolder'ı kodunuzun başka bir yerinde yeniden kullanmak ve farklı tıklama/dokunma işleyicileri sağlamak isterseniz, bu yaklaşım uygun değildir. Bağdaştırıcı dışındaki olayları (veya ViewHolder) işlemeniz gerekir. – plopd

+0

Bu işlemin en iyi şekilde yapıldığını düşünürüm, bu faaliyetin veya parçanın –

3

Bkz Jacob implementationRecyclerView.OnItemTouchListener arasında. Bence en iyi çözüm.

Size yardımcı olacağını umuyorum. Saygılarımızla.

+0

içerisindeyim, neden bu yöntemin OP'nin cevap olarak kabul edildiğinden daha iyi olduğunu düşünüyorsunuz? – veritas

+0

@veritas, görüntüleyenleri bağladığınızda her seferinde tıklama dinleyicisini ayarlamanız gerektiğinden, bu durumda RecyclerView için dokunma dinleyicisini tek bir yerde ayarlamanız yeterlidir. ListView'de olduğu gibi. –