2012-10-04 21 views
8

biz android ızgara görünümünü kullanmayı bildiği gibi, biz aşağıdakileri yapabilirsiniz ve madde tıklandığında bildirim almak:android olsun pozisyon

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
    Toast.makeText(PopularCapitActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
    } 
}); 

biz de biliyoruz ki eğer ızgara hücre tıklanabilir bir öğe içerir, bir düğme söyleyin, yukarıdakiler işe yaramaz.

Şimdilik ızgara görünümü var, her bir hücrenin kendine ait bir düğmesi var, şimdi kullanıcı düğmeyi tıkladığında, düğmenin bulunduğu hücreye göre kendi eylemine sahip olacak, benim sorum şu, nasıl düğme işleyicisinde hücre konumuna erişmek?

sayesinde

+0

GridView için özel bir bağdaştırıcı mı kullanıyorsunuz? – dennisdrew

+0

Evet, sadece sadece BaseListAdapter – user1697965

cevap

28

sadece GetView geçirilen pozisyonunu içeren Düğme nesnesine etiket ekleyebilir GetView yönteminde, sen GridView'da için özel adaptörü kullanarak varsayarsak: Sonra

button.setTag(new Integer(position)); 

Integer position = (Integer)view.getTag(); 

Ve sonra oradan pozisyon değerini işlemek: OnClickListener yönteminde, (düğme) içinde geçirilen görünümü ile yapabilirsiniz.

DÜZENLEME: en iyi uygulama yapmak olacaktır görünür:

button.setTag(Integer.valueOf(position)); 

yerine Tamsayı yapıcı kullanmaktan daha.

+5

Oh wow'u genişleten özel bir tane var, teşekkürler. Tek sorum şu: Neden bu cevabın 5000 adet yorumu var? GridViews'ta düğmelere basan tek kişi ben miyim? –

+1

Teşekkürler! En iyi uygulamayı dikkate almak için cevabımı yeni güncelledim. Yapıcıdan ziyade Integer.valueOf (konum) kullanılması önerilir. – dennisdrew

+0

Harika çözüm! Şimdi de, 'Integer.valueOf (position)' gerekli değil, sadece 'position' geçiyor da çalışacaktır. – jpyams

0
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     String a = String.valueOf(position); 
     Toast.makeText(getApplicationContext(), a, Toast.LENGTH_SHORT).show(); 
    } 
});