В моем приложении я хотел бы установить прослушиватель кликов по отдельным элементам предпочтения в моей активности предпочтений, проблема в том, что я могу только узнать, как установить прослушиватель кликов только на самом главном listprefernce, есть ли способ, которым я может установить ключ для отдельных элементов списка, поэтому, когда я настраиваю OnPreferenceClickListener, я могу выполнить некоторый код определенного элемента списка?Как установить прослушиватель кликов на отдельные элементы списка в android?
ответ
убедитесь, что ваш класс предпочтения implements
OnPreferenceClickListener, а затем переопределить onPreferenceClick
, то проверьте, какой ключ предпочтение прессовали
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals("schedulestart")) {
showDialog(0);
} else if (preference.getKey().equals("schedulestop")) {
showDialog(1);
} else if (preference.getKey().equals("priority")) {
getPreferenceManager().getSharedPreferences().edit().putInt("unreadcount", 0).commit();
}
return true;
}
Этот вопрос относительно древний, но я искал, чтобы сделать подобную вещь - специально получить крюк, когда нажимается любой элемент ListPreference. Такие вещи, как onSharedPreferenceChanged, не работали для меня, потому что мне нужно что-то делать, даже когда щелкнули выбранный в настоящее время ListPreference. Я не уверен, что понимаю другой ответ здесь, как решение проблемы. Мой googling не раскрыл никаких других решений.
Я пошел вместе с расширением ListPreference и переопределением onDialogClosed(). Источник ListPreference код onDialogClosed является
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult && mClickedDialogEntryIndex >= 0 && mEntryValues != null) {
String value = mEntryValues[mClickedDialogEntryIndex].toString();
if (callChangeListener(value)) {
setValue(value);
}
}
}
Я создал рабочий интерфейс для передачи значения выбранного элемента списка в моем новом ListPreference, а затем отменяет onDialogClosed:
public class MyListPreference extends ListPreference {
private ListItemClickListener mListItemClickListener;
...
public void setOnListItemClickListener(ListItemClickListener listener) {
mListItemClickListener = listener;
}
public interface ListItemClickListener {
public void onListItemClick(String value);
}
...
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult && getEntryValues() != null && mListItemClickListener != null) {
String value = getValue();
mListItemClickListener.onListItemClick(value);
}
}
Тогда в вашей деятельности настройки (или там, где вы используете новый ListPreference), просто подключить его в:
@Override
protected void onResume() {
super.onResume();
MyListPreference listPref = (MyListPreference)
findPreference(getString(R.string.key_name));
listPref.setOnListItemClickListener(this);
}
...
public void onListItemClick(String value) {
// Do something
}
Это работает для моих целей.
- 1. Как стилизовать отдельные элементы списка в Android?
- 2. Android | Как установить прослушиватель кликов в ListItem с помощью ArrayAdapter
- 3. установить прослушиватель для виджетов в элементах списка.
- 4. Как установить элемент списка кликов в angularJS?
- 5. Установить шрифт на элементы списка в android
- 6. Как установить на прослушиватель кликов на дочернем элементе в расширяемом виде списка
- 7. прослушиватель кликов в OnBindViewholder recyclerview android
- 8. как разделить текст на отдельные элементы списка
- 9. прослушиватель кликов на элементе связи
- 10. Как реализовать прослушиватель кликов в recyclerview?
- 11. Android - Прикрепите прослушиватель кликов к RemoteViews
- 12. Android: добавьте представление в другое, имея прослушиватель кликов на родительском
- 13. Как добавить прослушиватель кликов в CardView?
- 14. DevExpress.Web.ASPxListBox: как отформатировать отдельные элементы списка
- 15. Разделить элементы списка на отдельные столбцы
- 16. Получить отдельные элементы из списка
- 17. Как добавить прослушиватель кликов в пользовательский relativeLayout
- 18. Android Google Maps v2: на прослушиватель кликов не отвечает
- 19. Android: onItemНажмите прослушиватель ListView - как определить элементы?
- 20. Angular2: прослушиватель кликов с * ngFor
- 21. Google Maps marker прослушиватель кликов
- 22. Как реализовать прослушиватель в android
- 23. Как отключить прослушиватель кликов при просмотре изображений Android
- 24. jQuery: временно отключить прослушиватель кликов
- 25. Как создать прослушиватель кликов для класса Each()
- 26. Android: Элементы Gridview и внесение изменений в отдельные элементы
- 27. Как добавить прослушиватель кликов для значка приложения на ActionBar в Android?
- 28. прослушиватель кликов для панели вкладок в EXTJS
- 29. Android-виджет: как установить прослушиватель на кнопки на виджетах?
- 30. Как установить на клик-прослушиватель recyclerview, где элементы списка являются гетерогенными
так что я должен использовать имена отдельных массивов в качестве ключа здесь? –
yes есть android value 'android: key', что вы задаете имя ключа в xml – tyczj