Как я отображаю текущее значение Предпочтения Android в Предпочтительной сводке?

Использование лямбда-выражения

db.Categories    
  .GroupJoin(
      db.Products,
      Category => Category.CategoryId,
      Product => Product.CategoryId,
      (x, y) => new { Category = x, Products = y })
  .SelectMany(
      xy => xy.Products.DefaultIfEmpty(),
      (x, y) => new { Category = x.Category, Product = y })
  .Select(s => new
  {
      CategoryName = s.Category.Name,     
      ProductName = s.Product.Name   
  })
450
задан marienke 22 February 2017 в 10:41
поделиться

3 ответа

Есть способы сделать это более универсальным решением, если это соответствует вашим потребностям.

Например, если вы хотите, чтобы в общем случае все предпочтения списка отображали свой выбор в виде сводки, вы можете использовать это для своей реализации onSharedPreferenceChanged :

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    Preference pref = findPreference(key);

    if (pref instanceof ListPreference) {
        ListPreference listPref = (ListPreference) pref;
        pref.setSummary(listPref.getEntry());
    }
}

Это легко расширяемо для других классов предпочтений.

А используя функции getPreferenceCount и getPreference в PreferenceScreen и PreferenceCategory , вы можете легко написать универсальную функцию для обхода дерево предпочтений, устанавливающее сводку всех предпочтений нужных вам типов для их представления toString

151
ответ дан 22 November 2019 в 23:05
поделиться

Спасибо, Рето, за подробное объяснение!

Если это кому-то поможет, мне пришлось изменить код, предложенный Рето Майером, чтобы он работал с SDK для Android 1.5

@Override
protected void onResume() {
    super.onResume();

    // Setup the initial values
    mListPreference.setSummary("Current value is " + mListPreference.getEntry().toString()); 

    // Set up a listener whenever a key changes            
    ...
}

То же самое изменение относится к функции обратного вызова onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)

Будьте здоровы,

Chris

6
ответ дан 22 November 2019 в 23:05
поделиться

Согласно документы Android можно использовать app:useSimpleSummaryProvider="true" в компонентах ListPreference и EditTextPreference.

0
ответ дан 22 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: