2016-04-15 15 views
0

私は、アプリケーション内に2つの値セットを持っています.1つはリソースファイルから、もう1つはsharedpreferencesからです。これらを組み合わせてアダプタのソートリストを作成する簡単な方法はありますか?イテレータは文字列配列とイテレータを組み合わせてソート

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


    } catch (NullPointerException e1) { 

     //TODO 
    } 

    return userCities; 
} 

答えて

2

へ。

+0

ありがとうございます、あなたは救い主です! – zooter

+0

ですが、 'userCities'はリストオブジェクトです。 – Bharatesh

+0

あなたは 'readCitiesFromPref();'メソッドコードを投稿できますか? 'Iterator'が必要な理由を理解できません。 – Bharatesh

2

あなたはこのように行うことができます返されている理由を明確にするための

Spinner copyFromCity = (Spinner) findViewById(R.id.spinner); 


    Resources res = getResources(); 
    String [] predefinedCities = res.getStringArray(R.array.predefined_cities); 

    // Necessary to add Iterator String to an adapter 
    ArrayList<String> sortedPredefinedCities = new ArrayList<String>(); 
    ArrayAdapter<CharSequence> adapter = new ArrayAdapter(
      this, 
      android.R.layout.simple_spinner_item, 
      new ArrayList(Arrays.asList(predefinedCities))); 


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

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

    while(userCities.hasNext()){ 

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

/* TODO Way to sort both these values into alphabetical order */ 

    // 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()メソッド::ここに私のコードです がstring arrayList への変換はIteratorListに変換します Combine SortCollections.sort(yourCombinedList); feedそれらアダプタ私は、ソート、Listにそれらの配列/リストを追加し、

String [] predefinedCities = res.getStringArray(R.array.predefined_cities); 

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

    List<String> copyOfCities = new ArrayList<String>(); 
    while (userCities.hasNext()){ 

     copyOfCities.add(userCities.next()); 

    } 

    ArrayList<String> sortedCities = new ArrayList<String>(); 
    sortedCities.addAll(copyOfCities); 
    sortedCities.addAll(Arrays.asList(predefinedCities)); 
    Collections.sort(sortedCities); 

    ArrayAdapter<CharSequence> adapter = new ArrayAdapter(
      this, 
      android.R.layout.simple_spinner_item, 
      sortedCities); 

Happy_Codingをadatperするように設定していると思う何

関連する問題