Как идти о предпочтениях - PullRequest
       1

Как идти о предпочтениях

0 голосов
/ 30 сентября 2011

У меня есть представление списка, в котором отображаются такие данные, как:

2010 Сингапур 2009 Индия 2011 Швеция 2010 Германия

Теперь, когда я нажимаю кнопку меню, у меня есть два элемента, которые позволяют мне сортировать этот список по году или по стране. Сортировка работает нормально.

Что я хочу сделать сейчас, так это то, что когда я щелкаю по любому из двух пунктов, он должен вместе с соответствующей сортировкой списка теперь также сохранять способ сортировки в настройках. Поэтому в следующий раз, когда я открою приложение, оно должно быть отсортировано в точности так, как оно хранится в настройках. Какой подход я должен следовать здесь. Я имею в виду, как я могу сохранить это значение, как я сортировал в прошлый раз в моих предпочтениях. Я попытался изучить некоторые учебные пособия, но не понял идею полностью

На самом деле я просто хочу сохранить последний порядок сортировки в настройках. В следующий раз, когда пользователь запустит приложение, список стран должен быть отсортирован таким же образом, как и в прошлый раз, когда пользователь закрыл приложение.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, SORT_BY_YEAR, Menu.NONE, "Sort by Year")
            .setAlphabeticShortcut('y');
    menu.add(Menu.NONE, SORT_BY_COUNTRY, Menu.NONE, "Sort by Country")
            .setAlphabeticShortcut('c');

    return(super.onCreateOptionsMenu(menu));
}

/* (non-Javadoc)
 * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    String[] from = new String[] { "year", "country" };
    int[] to = new int[] { R.id.year, R.id.country };       

    switch (item.getItemId()) {
        case SORT_BY_YEAR:
            Cursor cYear = getContentResolver().query(CONTENT_URI, null, null, null, "year");       
            SimpleCursorAdapter scaYear = new SimpleCursorAdapter(this, R.layout.country_row,cYear, from, to);      
            setListAdapter(scaYear);
            sortOrder = "year";
            return(true);

        case SORT_BY_COUNTRY:
            Cursor cCountry = getContentResolver().query(CONTENT_URI, null, null, null, "country");     
            SimpleCursorAdapter scaCountry = new SimpleCursorAdapter(this, R.layout.country_row,cCountry, from, to);        
            setListAdapter(scaCountry);
            sortOrder = "country";
            return(true);
    }

    return(super.onOptionsItemSelected(item));
}

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Рассматривали ли вы использование SharedPreferences для сохранения предпочтительного порядка сортировки?

Когда пользователь выбирает порядок сортировки, сохраняемый вами в общем предпочтении, например

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putInt("sort_pref", 1).commit(); // 1 = sort on year

В следующий раз, когда вы откроете приложение, вы можете прочитать значение предпочтения

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int sort = prefs.getInt("sort_pref", -1); // -1 will be the result if no preference was set before
if(sort == 1)
    ///sort on year
else if (sort == 2)
    ///sort on country
0 голосов
/ 30 сентября 2011

посмотрите на getSharedPreferences () в вашей деятельности, чтобы получить копию SharedPreferences.Вы можете установить в него значения onClose (), а затем снова восстановить его при перезапуске приложения в onCreate ()

...