2013-09-02 25 views
7

Verileri doldurmak için dizi bağdaştırıcısını kullanan bir GridView sahibim.Izgara görünümü öğesini seçili olarak ayarla

GridView görüntülendiğinde, varsayılan olarak seçili öğeden birini göstermem gerekiyor. gridview.setselected() kullandım, ancak GridView öğeyi seçili olarak göstermedim (Bu, öğenin arka planı değişmemiş demektir). Izgara görünümü yüklendiğinde seçilen belirli bir öğeyi göstermenin herhangi bir yolu var mı?

+0

Varsayılan seçiciyi şeffaf olarak ayarladım ve görünümde seçili öğenin arka plan rengini ayarladım. onitemclick yönteminde notifydatasetchange eklendi ... – user2702700

cevap

1

yardımcı olacağını umuyoruz mantık. xml <GridView> kaleminde

ben kontrol edilmelidir için benim asıl istediğim olduğunu kavramadan önce dün biraz bu mücadele android:color/transparent

+0

yöntem notifydatasetchanged() tetiklemedi getView() – twlkyao

+0

Bu ürün nasıl seçilebilir? –

5

GridView.setSelected()'un aslında View'dan miras alınıp önerildiğini, düzeninizdeki tüm GridView'u seçtiniz.

Aradığın şey GridView öğesinin sıfırdan başlayarak geçerli öğeyi seçmek için GridView.setSelection(int position)10.

Başka yararlı işlevi veya başka (bir rotasyon söylemek) Eğer örnek durumundan geri yüklendiğinde restore edilebilmesi için (o büyük ve kaydırılabilir ise) GridView üzerinde mevcut konumu depolamak için kullanabileceğiniz GridView.getFirstVisblePostion() olduğunu.

Bu tür şeyler üzerinde çalışırken, widget'ınız/nesneniz için Android Developer documentation'u incelemek her zaman yararlı olur. Aşağıdaki yöntemle

GridView.setBackgroundResource(R.drawable.new_image_to_be_shown); 

ile

+0

çalıştı GridView.setSelection (int position) de çalışmıyor. Izgara görünüm öğeleri arka planım değişmedi. – user2702700

+0

GridView öğesinin düzenine bakmak ve arka plan için kullandığınız çekilişe bakmak isteyebilirsiniz. Seçilen durum için farklı bir arka plan olduğundan emin misiniz? –

+0

Emülatörde fareyi kullanarak uygulamayı başlatıyorum ve focusInTouch'ı da true olarak ayarlamıştım ama hala güncellenen arka planda değil.Ama herhangi bir öğeyi seçtiğimde arka plan, gridview öğesi için kullanılabilecek herhangi bir çizim kullanmıyorum, gridview – user2702700

-1

et Bu yeni resim olarak seçilen öğenin arka planını değiştirmek izin verir.

Ve sonra

GridView.setBackgroundColor(int color); 

Bu

sorununuzu çözecektir kullanımı-Değişikliğin seçilen öğenin rengini istiyorum.

+0

gridview llistselector kullanarak rengini ayarladım, bu tüm kılavuzun rengini değiştirir, – Krzysztof

2

Ben

if(row != null) { 
    if(position == selectedPosition){ 
     set required background color 
    } else { 
     set background color to Color.TRANSPARENT 
    } 
} 
onItemClick yönteminde

Adapter.selectedPosition değerini ve gerekli devam sonra notifydatasetchanged() arayıp şu do bu adaptörün getView() yöntemde size

gridView.requestFocusFromTouch(); 
     gridView.setSelection(1); 
+0

öğeyi denemedim ama işe yaramadı. – user2702700

+1

Bu öğeye ilerlemek için kılavuza yardımcı olur. Teşekkürler dostum. –

14

için listSelector ayarlayın.

gridview.setItemChecked(position, true); 
+0

Teşekkürler adam, bu işe yarıyor! – Qianqian

+0

Benim için de çalışıyor! Teşekkürler! –

İlgili konular