рдЖрд╡реЗрджрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ SeekBar



рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдХреНрд░реАрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЪреЗрдХрдмреЙрдХреНрд╕рдкреНрд░реАрдлреЗрд░реЗрдВрд╕, рдПрдбрд┐рдЯ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд┐рдлрд░реЗрдВрд╕, рд▓рд┐рд╕реНрдЯрдкреНрд░реЗрдлреЗрд░реЗрдВрд╕ред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореМрдЬреВрджрд╛ рд╡рд┐рдЬреЗрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдХреНрд╕рд░ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЙрдЪрд┐рдд рд╕реАрдорд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ: рдЪрдордХ, рдорд╛рддреНрд░рд╛, рдЖрджрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЯреНрд░реЗрдирд┐рдВрдЧ

рдЖрдЗрдП, рд╕рдВрд╡рд╛рдж-рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ - рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдХреНрд░реАрди рдореЗрдВ рджреЛ-рдкрдВрдХреНрддрд┐ рддрддреНрд╡ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдПрдХ рд╕рдВрд╡рд╛рдж рдЦреЛрд▓рддреЗ рд╣реИрдВред



рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдмреБрд▓рд╛рдУ SeekBarPreferenceред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдиреНрдпреВрдирддрдо рдорд╛рди, рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдФрд░ рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рд▓реЗрдЧрд╛ред

рддрдм рдлрд╝рд╛рдЗрд▓ /res/xml/preferences.xml рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:example="http://schemas.android.com/apk/res/com.mnm.seekbarpreference"> <com.mnm.seekbarpreference.SeekBarPreference android:key="seekBarPreference" android:title="@string/dialog_title" android:dialogTitle="@string/dialog_title" android:summary="@string/summary" android:persistent="true" android:defaultValue="20" example:minValue="10" example:maxValue="50" /> </PreferenceScreen> 

рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, /res/values/attrs.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВред

 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="com.mnm.seekbarpreference.SeekBarPreference"> <attr name="minValue" format="integer" /> <attr name="maxValue" format="integer" /> </declare-styleable> </resources> 

<рдШреЛрд╖рд┐рдд-рд╢реИрд▓реА-рдпреЛрдЧреНрдп> рдЯреИрдЧ рдХреА рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рд╣реА рдирд╛рдо, рдХреЗрд╡рд▓ рдПрдХ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдкреНрд░рд╛рд░реВрдк рдореЗрдВ ( schemas.android.com/apk/res/qualified_class_name ) рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╛рдорд╕реНрдерд╛рди (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

Xml рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╕рдВрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╛рд░реНрдХрдЕрдк рдХреЛрдб рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп, рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп, рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реАрдХрдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ TextView рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЕрдм рдЖрдк SeekBarPreference рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛:

 mMinValue = attrs.getAttributeIntValue(PREFERENCE_NS, ATTR_MIN_VALUE, DEFAULT_MIN_VALUE); mMaxValue = attrs.getAttributeIntValue(PREFERENCE_NS, ATTR_MAX_VALUE, DEFAULT_MAX_VALUE); mDefaultValue = attrs.getAttributeIntValue(ANDROID_NS, ATTR_DEFAULT_VALUE, DEFAULT_CURRENT_VALUE); 

рдЬрд╣рд╛рдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ (рдпрджрд┐ рд╡реЗ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ):

 private static final String PREFERENCE_NS = "http://schemas.android.com/apk/res/com.mnm.seekbarpreference"; private static final String ANDROID_NS = "http://schemas.android.com/apk/res/android"; private static final String ATTR_DEFAULT_VALUE = "defaultValue"; private static final String ATTR_MIN_VALUE = "minValue"; private static final String ATTR_MAX_VALUE = "maxValue"; 

рд╕рдВрд╡рд╛рдж рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо onCreateDialogView рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:

 @Override protected View onCreateDialogView() { //     mCurrentValue = getPersistedInt(mDefaultValue); //   LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.dialog_slider, null); //     ((TextView) view.findViewById(R.id.min_value)).setText(Integer.toString(mMinValue)); ((TextView) view.findViewById(R.id.max_value)).setText(Integer.toString(mMaxValue)); //  SeekBar mSeekBar = (SeekBar) view.findViewById(R.id.seek_bar); mSeekBar.setMax(mMaxValue - mMinValue); mSeekBar.setProgress(mCurrentValue - mMinValue); mSeekBar.setOnSeekBarChangeListener(this); //    mValueText = (TextView) view.findViewById(R.id.current_value); mValueText.setText(Integer.toString(mCurrentValue)); return view; } 

рдорд╛рди рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕реАрдХрдмрд╛рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛ 0 рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдиреНрдпреВрдирддрдо рдиреЙрдирдЬрд░реЛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╡реИрд╕реЗ, рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ, рд╕рд╛рде рд╣реА рдЬрдм рдЕрдзрд┐рдХрддрдо рдиреНрдпреВрдирддрдо рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХрд╛ рдкрд╛рда рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо OnSeekBarChangeListener рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ SeekBarPreference рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, mSeekBar.setOnSeekBarChangeListener(this) рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) { mCurrentValue = value + mMinValue; mValueText.setText(Integer.toString(mCurrentValue)); } 

рдФрд░ рдлрд┐рд░, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕реАрдХрдмреЗрд░ рдХрд╛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реИ, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡реЗрджрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдЧрд▓рд╛ рдХрджрдо рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдкрд░, onDialogClosed рд╡рд┐рдзрд┐ onDialogClosed , рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

 @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if (!positiveResult) { return; } if (shouldPersist()) { persistInt(mCurrentValue); } notifyChanged(); } 

рдпрджрд┐ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреЗрдХ shouldPersist() рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ android:persistent рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ android:persistent рд╡рд░реАрдпрддрд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ android:persistent рдзреНрд╡рдЬред xml ред

рдереЛрдбрд╝реА рдЯреНрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдЖрдЦрд┐рд░реА рд▓рд╛рдЗрди рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ ( рд╕рд╛рд░рд╛рдВрд╢ ) рдЧрддрд┐рд╢реАрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 @Override public CharSequence getSummary() { String summary = super.getSummary().toString(); int value = getPersistedInt(mDefaultValue); return String.format(summary, value); } 

рдпрд╣рд╛рдВ, рд╕рд╛рд░рд╛рдВрд╢ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп, рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдХреНрд░реАрди рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ notifyChanged() рдХреЛ рдХреЙрд▓ notifyChanged() ред

рдкрд░рд┐рдгрд╛рдо

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд┐рдЬреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИред рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд╛рдЗрди рд╕рд╛рд░рд╛рдВрд╢ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн

рдбреНрд░рд╛рдлреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рд▓реЗрдЦ
рд╕реАрдХрдмрд╛рд░ (рдПрди) рдХрд╛ рд╡рд┐рд╡рд░рдг
рд╕рдВрд╡рд╛рдж рдХрд╛ рд╡рд┐рд╡рд░рдг (рдПрди)

Source: https://habr.com/ru/post/In114733/


All Articles