SORU
8 Temmuz 2010, PERŞEMBE


Liste Görünümü içinde ArrayAdapter değiştirmek mümkün: UnsupportedOperationException

Adlarını içeren bir liste yapmaya çalışıyorum. Bu liste değiştirilebilir (ekleme, silme, sıralama, vb.) olmalıdır. Bu ArrayAdapter öğeleri değiştirmeye çalıştım ancak, her ne zaman, programı, java.lang.UnsupportedOperationException hata ile kaza yaptı. İşte benim kod:

ListView panel = (ListView) findViewById(R.id.panel);
String[] array = {"a","b","c","d","e","f","g"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
adapter.setNotifyOnChange(true);
panel.setAdapter(adapter);

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
      adapter.insert("h", 7);
   }
});

Ekle ve kaldır yöntemleri açık denedim, hiçbiri işe yaramadı. Birisi yanlış ne yaptım, söyle bana?

CEVAP
8 Temmuz 2010, PERŞEMBE


Kendimi işe yaramadı tespit çalıştım. I ArrayAdapter kaynak kodunu kontrol edin ve sorun fark ettim. Bu ArrayAdapter, bir dizi tarafından başlatılmış, değiştirilemez olan bir AbstractList (Liste) dizisine dönüştürür.

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

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); 

Şerefe!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infodirt

    infodirt

    11 Mart 2009
  • metagamers

    metagamers

    13 Mayıs 2006
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010