2010-07-08 21 views
88

Adlar içeren bir liste oluşturmaya çalışıyorum. Bu liste değiştirilebilir (ekleme, silme, sıralama, vb.) Olmalıdır. Ancak, ArrayAdapter öğelerini değiştirmeye çalıştığımda, program java.lang.UnsupportedOperationException hatasıyla çöktü. Benim kodum:ListView'de ArrayAdapter değiştirilemiyor: UnsupportedOperationException

Ekleme, kaldırma ve silme yöntemlerini denedim ve bunların hiçbiri işe yaramadı. Birisi bana yanlış yaptıklarımı söyler mi?

cevap

254

Denedim, kendim ... Bulunamadı. Bu yüzden ArrayAdapter kaynak kodunu kontrol edip problemi çözdüm. Bir dizi tarafından başlatılan ArrayAdapter, diziyi değiştirilemeyen bir Özet Listesine (Liste) dönüştürür.

Çözüm kullanın ArrayAdapter başlatılırken yerine bir dizi kullanarak bir ArrayList<String>.

String[] array = {"a","b","c","d","e","f","g"}; 
ArrayList<String> lst = new ArrayList<String>(Arrays.asList(array)); 
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, lst); 

Cheers!

+7

Çok teşekkür ederim! Bana saat hayal kırıklığını kurtardın. String [] 'in neden çalışmadığını bana açıklar mısınız? – Ryan

+2

Bir düzenleme eklendi ... :) lütfen tekrar okuyun. – st0le

+0

@Ryan bir diziye ekleyemezsiniz, liste uygulaması izin vermedikçe bir listeye girebilirsiniz. Destek verileriniz değişmeyecekse, ArrayAdapter daha fazla bellek verimli bir teknik kullanmanıza izin verir. –

İlgili konular