2011-02-26 15 views
17

ArrayAdapter.add() विधि मेरे लिए काम नहीं कर रही है। मैं एडीटी प्लगइन के साथ ग्रहण हेलीओस 3.6 का उपयोग कर रहा हूं, लक्ष्य स्रोत एक फियोयो 2.2 एमुलेटर और 2.2 एचटीसी ईवो 4 जी है। यहाँ मेरी जावा वर्गएंड्रॉइड ऐरेएडाप्टर। विधि जोड़ें

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

यहाँ सूची आइटम के लिए मेरी लेआउट (list_item.xml)

<?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> 

यह मेरे और त्रुटि LogCat कि कहते हैं

में दे रहा है है और इसके कारण: java.lang.UnsupportedOperationException java.util.AbstractList.add (AbstractList.java:411) पर java.util.AbstractList.add (AbstractList.java:432) android.widget.ArrayAdapter.add (ArrayAdapter.java:178) पर

उत्तर

38

मैं सिर्फ सीख रहा हूँ, लेकिन अगर मैं पढ़ रहा हूँ source सही ढंग से, ArrayAdapter का कन्स्ट्रक्टर सरणी या सूची में प्रत्येक तत्व के संदर्भों की प्रतिलिपि नहीं करता है। इसके बजाय, यह सीधे सूची में उपयोग की जाने वाली सूची का उपयोग करता है, या किसी सरणी के लिए मूल सरणी को सूची के रूप में मानने के लिए asList() का उपयोग करता है। चूंकि asList() द्वारा लौटाई गई सूची अभी भी अंतर्निहित सरणी का प्रतिनिधित्व है, आप कुछ भी नहीं कर सकते (जैसे आकार बदलना) कि आप किसी सरणी के साथ नहीं कर सके।

किसी सरणी के बजाय ArrayList जैसी सूची उत्तीर्ण करने का प्रयास करें।

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

यदि यह सही है, तो ArrayAdapter दस्तावेज़ स्पष्ट हो सकता है। प्रयुक्त कन्स्ट्रक्टर के आधार पर तत्व जोड़ने की क्षमता का कोई उल्लेख नहीं है। – erichamion

+0

आप सही हैं, इसने मेरे मुद्दों को हल किया है और मेरी लिस्टव्यू के भीतर मेरी लिस्ट व्यू अब काम करता है! – Mike

संबंधित मुद्दे