1

ArrayAdapterの文字列イテレータの値を追加しようとしていますが、正しい結果が得られません。ここに私のコードです:ArrayAdapterに文字列反復子値を追加する方法は?

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

スピナーが唯一の方法readCitiesFromPref()から来て、私の県ファイルからの値ではなく、余分な文字列値を示しています。

私はすでに返されたイテレータ文字列に値があることを確認しました。デバッグモードでは、私が「これはアダプタが好みから持っている既存のmObjectsに

おかげ

が追加されていないことを確認することができメートル

編集:私はそれことを維持するものの、要求どおりreadCitiesFromPref()メソッドを追加します戻り値が正確であると予想されるように、文字列のイテレータを持っているので無関係です:

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

たちは、私は繰り返しを行わずuserCitiesを返すとき 'readCitiesFromPref()'メソッド残念ながら – Petro

答えて

2

あなたはイテレータを作成しているとき、あなたはまた、あなたがすべての要素を反復処理し、それだけで後にしているため、問題がreadCitiesFromPrefでありますイテレータを返しています。イテレータの値はです。 0のため、このコードwhile(userCities.hasNext()){は決して実行されません。これを修正するには、すべての値がロードされた後にイテレーターを戻します。

+0

を参照してくださいする必要があり、私は "mはアダプター – zooter

+0

にこれを追加しようとjava.lang.UnsupportedOperationExceptionがを得る基本的に私はこの答えはhttpが見つかりました: //stackoverflow.com/questions/3476723/why-cant-one-add-remove-items-from-an-arrayadapter - しかし、ArrayAdapterを作成する際にこれを実装する方法が不明です。ヘルプは大いに役立つでしょう – zooter

+0

、私はこれを行う方法を見つけた - http://stackoverflow.com/a/11040777/5662769 – zooter

関連する問題