2011-02-26 27 views
17

ArrayAdapter.add() yöntemi benim için çalışmıyor. Eclipse Helios 3.6 ADT Plugin ile kullanıyorum, Hedef Kaynak bir Froyo 2.2 emülatörü ve 2.2 HTC Evo 4g. İşte Liste öğesi için benim düzeni (list_item.xml)Android ArrayAdapter.Add yöntemi çalışmıyor

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    android:padding="10dp" 
    android:textSize="12sp" 
</TextView> 

O

diyor LogCat beni ve hata veriyor burada benim java sınıf

import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.ArrayAdapter; 

    public class Main extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      String[] entries = {"List Item A", "List Item B"}; 

      ArrayAdapter<String> arrAdapt=new ArrayAdapter<String>(this, R.layout.list_item, entries); 

      arrAdapt.setNotifyOnChange(true); 
      arrAdapt.add("List Item C"); 
     } 
    } 

Ve Nedeni: java.lang.UnsupportedOperationException adresindeki java.util.AbstractList.add (AbstractList.java:411) adresinden java.util.AbstractList.add android.widget.ArrayAdapter.add (ArrayAdapter.java:178) 'den (AbstractList.java:432)

cevap

38

okuyorum eğer ben sadece öğrenme, ancak ediyorum source doğru olarak, ArrayAdapter yapıcısı dizideki veya listedeki öğelerin her birine başvurular kopyalamaz. Bunun yerine, doğrudan iletilen listeyi kullanır veya bir dizi için orijinal diziyi bir liste olarak işlemek için asList() kullanır. AsList() tarafından döndürülen liste hala temeldeki dizinin bir temsili olduğundan, bir diziyle yapamayacağınız bir şeyi (yeniden boyutlandırma gibi) yapamazsınız.

Dizi yerine ArrayList gibi bir listeyi geçirmeyi deneyin.

ArrayList<String> entries = 
     new ArrayList<String>(Arrays.asList("List Item A", "List Item B")); 

ArrayAdapter<String> arrAdapt= 
     new ArrayAdapter<String>(this, R.layout.list_item, entries); 

arrAdapt.setNotifyOnChange(true); 
arrAdapt.add("List Item C"); 
+3

Bu doğruysa, ArrayAdapter belgeleri daha açık olabilir. Kullanılan kurucuya bağlı olarak eleman ekleme yeteneğinden bahsedilmiyor. – erichamion

+0

Haklısınız, bu benim sorunlarımı çözdü ve bir LinearLayout içindeki ListView'im şimdi çalışıyor! – Mike

İlgili konular