1

Bir dize yineleyici ve ArrayAdapter değerlerini eklemeye çalışıyorum ve doğru sonuçları alamıyorum. İşte benim kodudur:String Iterator değerleri ArrayAdapter'e nasıl eklenir?

Spinner copyFromCity = (Spinner) findViewById(R.id.spinner); 
     // Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.predefined_cities, android.R.layout.simple_spinner_item); 


    // Add values from our custom cities onto the Adapter via SharedPreferences 

    prefs = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE); 
    Iterator<String> userCities = readCitiesFromPref(); 

    while(userCities.hasNext()){ 

     adapter.add(userCities.next()); 
    } 


    // Specify the layout to use when the list of choices appears 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    // Apply the adapter to the spinner 
    copyFromCity.setAdapter(adapter); 

spinner sadece yöntemiyle readCitiesFromPref() gelen benim terc dosyadan değerleri değil, ekstra dize değerlerini gösterir;

Yineleyici Dizesi döndürülen değerlerin olduğunu doğruladım. Hata ayıklama modunda, ben "bu adaptör tercihlerinden sahip olduğunu, mevcut mObjects için

Teşekkür

eklendi olmadığını görmek mümkün m

Düzenleme: Ben iddia olsa isteğinize göre readCitiesFromPref() yöntemini ekleme dönüş değeri doğrudur ve beklendiği gibi dizeleri bir yineleyici çünkü alakasız:

protected Iterator<String> readCitiesFromPref() { 

    // See if preferences store this 
    JSONObject citiesList = null; 
    Iterator<String> userCities = null; 
    try { 

     // Yes, so get the values out 
     citiesList = new JSONObject(prefs.getAll()); 

     userCities = citiesList.keys(); 

     while (userCities.hasNext()) { 

      Log.i("Ram = ", userCities.next()); 
     } 

    } catch (NullPointerException e1) { 

     // 
    } 

    return userCities; 
} 
+0

biz yinelemeyi yapmadan userCities döndüğünüzde 'readCitiesFromPref()' yöntemi maalesef – Petro

cevap

2

sen yineleyici oluştururken, aynı zamanda ve ancak bundan sonra tüm unsurları yineleme çünkü sorun readCitiesFromPref olduğunu seniçin değere sahip yineleyici dönüyor 0 ve bu nedenle bu kod while(userCities.hasNext()){ asla çalıştırılmayacaktır. Bunu düzeltmek için, tüm değerler yüklendikten sonra yinelemeyi döndürmeniz yeterlidir.

+0

görmek gerek, ben "m adaptörü – zooter

+0

bu eklemek için çalışan bir java.lang.UnsupportedOperationException alma temelde ben bu cevabı http bulundu: //stackoverflow.com/questions/3476723/why-cant-one-add-remove-items-from-an-arrayadapter - ancak bunu ArrayAdapter'mn oluşturulmasında nasıl uygulanacağı açık değil.Yardım çok fazla – zooter

+0

aklına takılır. Bunu yapmanın yolunu buldum - http://stackoverflow.com/a/11040777/5662769 – zooter

İlgili konular