2012-11-15 21 views
12

Listelenen bir öğenin değerini, özel bir bağdaştırıcıda bir liste görünümünde almaya çalışıyorum. Ben tıklarsanız, değerler iyi, başındaÖğenin değeri OnItemClick Listview öğesinden alın

public void onItemClick(AdapterView<?> parent, View v, 
         int position, long id) { 

        View curr = parent.getChildAt((int) id); 
        TextView c = (TextView)curr.findViewById(R.id.tvPopUpItem); 
        String playerChanged = c.getText().toString(); 

        Toast.makeText(Settings.this,playerChanged, Toast.LENGTH_SHORT).show(); 

       } 

ama kaydırılan ve ben başka Öğe tıkladığınızda, bunu tıklanan öğenin yanlış değeri elde ...: Aşağıdaki kod ile bu deneyin Buna neyin sebep olduğuna dair fikri olan?

cevap

45

Geçerli satır v parametresidir.

public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
    TextView c = (TextView) v.findViewById(R.id.tvPopUpItem); 
    String playerChanged = c.getText().toString(); 

    Toast.makeText(Settings.this,playerChanged, Toast.LENGTH_SHORT).show(); 
} 

(Yoksa getChildAt(position) kullanabilirsiniz ama bu yavaş olacaktır.)

Eğer düzenine bağlı bu daha basitleştirmek mümkün olabilir anlayın: öylesine kullanın. Eğer özel kullanarak bu yana

+0

Teşekkürler, bu işe yarıyor! GetChildAt pozisyonunun neden çalışmadığına dair bir fikrin var mı? Ben de bunu denedim, ama bu da bana hata verdi .. –

+1

Bağdaştırıcınıza bağlı olarak, 'id' tamamen farklı bir dizine başvurabilir. Örneğin, CursorAdapters, tablonun birincil anahtarını "id" olarak döndürür. Diğer taraftan 'position', satır sayısına bakmalıdır. – Sam

+0

@Sam Teşekkürler, bu benim için harika bir iş !. –

0

Hemen Küçük Değişim

TextView c = (TextView) v.findViewById(R.id.tvPopUpItem); 

Gerekli ardından bu

mevcut TextView'lar ise detaylarını almak için bu değeri kullanmak gerekir Eğer OnItemClickListener görüntüleme argüman geçmesi gerekiyor görüntülemek
+1

Bir dahaki sefere bir yorum yapın, ek bir cevap göndermeyin. – sparticvs

0

Burada kullanıcı adı, bir sınıfta bildirilen bir dize alanıdır ve tıklattığınızda şişirilmiş satır ayrıntılarını almak için adaptör sınıfında getItem() yöntemini aşmanız gerekir.

İlgili konular