Вероятно, это связано с тем, что все три кнопки находятся под одним элементом предпочтений. Когда вы устанавливаете OnPreferenceClickListener
, он выбирает все предпочтения с макетом, который вы включили в целом.
Таким образом, вместо установки OnPreferenceClickListener
вы должны попытаться получить родительское представление и настроить прослушиватели щелчков на этих TextView
отдельно и оттуда обновить значение предпочтения.
Или вы можете просто установить атрибуты onClick
каждого TextView
в файле макета XML для нужных вам функций.
Чтобы получить представление этого предпочтения, вы можете использовать что-то вроде
View preferenceView = getListView().getChildAt(preference.getOrder());
Или использовать метод getView и предоставить оба параметра со значением null:
View preferenceView = preference.getView(null, null);
Если вы используете библиотеку AndroidX для предпочтения,тогда нет никакого метода getView
, поэтому единственным вариантом будет создание пользовательского класса Preference и обработка там представлений:
public class CustomPreference extends Preference {
public CustomPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onBindView(View rootView) {
super.onBindView(rootView);
View myView = rootView.findViewById(R.id.myViewId);
// get your textViews from myView
TextView maleText = myView.findViewById(R.id.male);
...
}
}
Затем используйте его в файле preference.xml следующим образом:
<your.package.CustomPreference
android:key="your_key"
android:layout="@layout/your_layout" />