Update TextView directly
This commit is contained in:
		
							parent
							
								
									c7e692e9e5
								
							
						
					
					
						commit
						1c89076393
					
				| @ -5,10 +5,11 @@ import android.support.v7.preference.PreferenceViewHolder; | ||||
| import android.support.v7.preference.SeekBarPreference; | ||||
| import android.util.AttributeSet; | ||||
| import android.widget.SeekBar; | ||||
| import android.widget.TextView; | ||||
| import org.fdroid.fdroid.R; | ||||
| 
 | ||||
| public class LiveSeekBarPreference extends SeekBarPreference { | ||||
|     private Runnable progressChangedRunnable; | ||||
|     private SeekBarLiveUpdater seekBarLiveUpdater; | ||||
|     private boolean trackingTouch; | ||||
|     private int value = -1; | ||||
| 
 | ||||
| @ -33,7 +34,7 @@ public class LiveSeekBarPreference extends SeekBarPreference { | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onBindViewHolder(PreferenceViewHolder holder) { | ||||
|     public void onBindViewHolder(final PreferenceViewHolder holder) { | ||||
|         super.onBindViewHolder(holder); | ||||
| 
 | ||||
|         SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar); | ||||
| @ -41,8 +42,12 @@ public class LiveSeekBarPreference extends SeekBarPreference { | ||||
|             @Override | ||||
|             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { | ||||
|                 value = progress; | ||||
|                 if (progressChangedRunnable != null) { | ||||
|                     progressChangedRunnable.run(); | ||||
|                 if (seekBarLiveUpdater != null) { | ||||
|                     String message = seekBarLiveUpdater.seekBarUpdated(value); | ||||
|                     TextView summary = holder.itemView.findViewById(android.R.id.summary); | ||||
|                     if (summary != null) { | ||||
|                         summary.setText(message); | ||||
|                     } | ||||
|                 } | ||||
|                 if (fromUser && !trackingTouch) { | ||||
|                     persistInt(value); | ||||
| @ -77,7 +82,11 @@ public class LiveSeekBarPreference extends SeekBarPreference { | ||||
|         return value; | ||||
|     } | ||||
| 
 | ||||
|     public void setProgressChangedRunnable(Runnable runnable) { | ||||
|         progressChangedRunnable = runnable; | ||||
|     public void setSeekBarLiveUpdater(SeekBarLiveUpdater updater) { | ||||
|         seekBarLiveUpdater = updater; | ||||
|     } | ||||
| 
 | ||||
|     public interface SeekBarLiveUpdater { | ||||
|         String seekBarUpdated(int position); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -116,26 +116,26 @@ public class PreferencesFragment extends PreferenceFragment | ||||
| 
 | ||||
|         overWifiSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI); | ||||
|         overWifiPrevious = overWifiSeekBar.getValue(); | ||||
|         overWifiSeekBar.setProgressChangedRunnable(new Runnable() { | ||||
|         overWifiSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 updateSummary(overWifiSeekBar.getKey(), false); | ||||
|             public String seekBarUpdated(int position) { | ||||
|                 return getNetworkSeekBarSummary(position); | ||||
|             } | ||||
|         }); | ||||
|         overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA); | ||||
|         overDataPrevious = overDataSeekBar.getValue(); | ||||
|         overDataSeekBar.setProgressChangedRunnable(new Runnable() { | ||||
|         overDataSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 updateSummary(overDataSeekBar.getKey(), false); | ||||
|             public String seekBarUpdated(int position) { | ||||
|                 return getNetworkSeekBarSummary(position); | ||||
|             } | ||||
|         }); | ||||
|         updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL); | ||||
|         updateIntervalPrevious = updateIntervalSeekBar.getValue(); | ||||
|         updateIntervalSeekBar.setProgressChangedRunnable(new Runnable() { | ||||
|         updateIntervalSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 updateSummary(updateIntervalSeekBar.getKey(), false); | ||||
|             public String seekBarUpdated(int position) { | ||||
|                 return getString(UPDATE_INTERVAL_NAMES[position]); | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
| @ -172,17 +172,21 @@ public class PreferencesFragment extends PreferenceFragment | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private String getNetworkSeekBarSummary(int position) { | ||||
|         if (position == 0) { | ||||
|             return getString(R.string.over_network_never_summary); | ||||
|         } else if (position == 1) { | ||||
|             return getString(R.string.over_network_on_demand_summary); | ||||
|         } else if (position == 2) { | ||||
|             return getString(R.string.over_network_always_summary); | ||||
|         } else { | ||||
|             throw new IllegalArgumentException("Unknown seekbar position"); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) { | ||||
|         int position = seekBarPreference.getValue(); | ||||
|         if (position == 0) { | ||||
|             seekBarPreference.setSummary(R.string.over_network_never_summary); | ||||
|         } else if (position == 1) { | ||||
|             seekBarPreference.setSummary(R.string.over_network_on_demand_summary); | ||||
|         } else if (position == 2) { | ||||
|             seekBarPreference.setSummary(R.string.over_network_always_summary); | ||||
|         } else { | ||||
|             throw new IllegalArgumentException("No such " + seekBarPreference.getTitle() + " position: " + position); | ||||
|         } | ||||
|         seekBarPreference.setSummary(getNetworkSeekBarSummary(position)); | ||||
|     } | ||||
| 
 | ||||
|     private void enableUpdateInverval() { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 ByteHamster
						ByteHamster