2010-08-05 9 views
7

setAdapter() kullanarak, AlertDialog kullanarak görüntülemek istediğim özel bir Bağdaştırıcıyı genişleten BaseAdapter (verimlilik bağdaştırıcısı) kullanan bir müzik çalar yazıyorum; burada çalma listesindeki ilgili konuma geçmek için kullanıcının şarkılardan birini tıklatabilir VEYA şarkı listesinden kaldırılacak şarkılar. Özel bir tıklama dinleyicisi kullanmayı denedim, böylece kullanıcı listeden öğeyi kaldırmak için uzun süre tıklayabilirdi, ancak listview sadece doğru çalışmıyor ... yanlış öğelerin (sonunda olanlar) kaldırılıyordu. ArrayList, doğru çalma listesi öğelerini içeriyordu ... (öğeyi ArrayList'dan kaldırdığımda, notifyDataSetChanged olarak adlandırılan bağdaştırıcıya ilettim ... ancak sözünü ettiğim gibi çalışmadı. AlertDialog ListView içinde kesinlikle bir hata var ... çünkü sonuçların doğru öğeden ziyade sonuçtan çıkması için bir neden yoktur.Bir verimlilik arrayadapter kullanan bir Özel AlertDialog ile setMultiChoiceItems() nasıl kullanılır?

Yani, denemek istediğim sonraki yöntemyöntemini kullanmaktır. AlertDialog ... ama özel bir adaptör ile çalışmadığı anlaşılıyor ... sadece basit diziler. AlertDialog ve OverridesetMultiChoiceItems() yönteminin alt sınıfını mı yoksa bir ArrayAdapter ile çalışmasını sağlamanın bir yolu var mı?

Temel olarak, AlertDialog nolu listenin nasıl yinelendiğini veya bu görünümün bir şekilde geçip geçmediğini anlayamıyorum. Ayrıca, bunları satırlara eklediğimde checkboxes numaralı tıklamaları bile dinleyebileceğimi düşünmüyorum. Herhangi bir yardım büyük takdir edilecektir.

DÜZENLEME: Burada soru sormak sihir gibidir ... Kendi sorumu cevapladım ... böyle yaptım. checkbox numaralı öğeye, öğenin ArrayList'daki konumuna ilişkin bir ipucu ekledim. Sonra seçimleri yakalamak için OnCheckedChangeListener'u kullandım. Bir ipucu ayarladığınızda, checkbox ... AlertDialog'un arka planı beyaz (tıklanan öğeler için bile) olduğundan metin ekler. İpucu metin rengini şeffaf olarak ayarladım.

holder.check.setHintTextColor(Color.TRANSPARENT); 
holder.check.setHint(String.valueOf(position)); 
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     int position = Integer.parseInt((String) buttonView.getHint()); 
     Log.v("onCheckedChanged", "Checked: "+isChecked+" returned: "+position+" which should be "+getItem(position).name);       
    } 

}); 
+0

'da açıklandığı gibi bir alan booleanı oluşturdunuz. Metni kopyalamaya/yapıştırmaya ve yanıt mekanizmasını doğru şekilde kullanmaya çalışın. – Pabluez

cevap

3

sonra geçmek gerekirse setMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false}; 

sonra setPositiveButton().

içinde booleans değerini kontrol [] bitinde bir başvuru geçmek This ve

This bakınız Bu AlertDialog etrafında, daha sonrauzatınve 1.

İlgili konular