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.support.v7.preference.SeekBarPreference;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
|
import android.widget.TextView;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
|
|
||||||
public class LiveSeekBarPreference extends SeekBarPreference {
|
public class LiveSeekBarPreference extends SeekBarPreference {
|
||||||
private Runnable progressChangedRunnable;
|
private SeekBarLiveUpdater seekBarLiveUpdater;
|
||||||
private boolean trackingTouch;
|
private boolean trackingTouch;
|
||||||
private int value = -1;
|
private int value = -1;
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ public class LiveSeekBarPreference extends SeekBarPreference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
public void onBindViewHolder(final PreferenceViewHolder holder) {
|
||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
|
|
||||||
SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar);
|
SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar);
|
||||||
@ -41,8 +42,12 @@ public class LiveSeekBarPreference extends SeekBarPreference {
|
|||||||
@Override
|
@Override
|
||||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||||
value = progress;
|
value = progress;
|
||||||
if (progressChangedRunnable != null) {
|
if (seekBarLiveUpdater != null) {
|
||||||
progressChangedRunnable.run();
|
String message = seekBarLiveUpdater.seekBarUpdated(value);
|
||||||
|
TextView summary = holder.itemView.findViewById(android.R.id.summary);
|
||||||
|
if (summary != null) {
|
||||||
|
summary.setText(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (fromUser && !trackingTouch) {
|
if (fromUser && !trackingTouch) {
|
||||||
persistInt(value);
|
persistInt(value);
|
||||||
@ -77,7 +82,11 @@ public class LiveSeekBarPreference extends SeekBarPreference {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProgressChangedRunnable(Runnable runnable) {
|
public void setSeekBarLiveUpdater(SeekBarLiveUpdater updater) {
|
||||||
progressChangedRunnable = runnable;
|
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);
|
overWifiSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI);
|
||||||
overWifiPrevious = overWifiSeekBar.getValue();
|
overWifiPrevious = overWifiSeekBar.getValue();
|
||||||
overWifiSeekBar.setProgressChangedRunnable(new Runnable() {
|
overWifiSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public String seekBarUpdated(int position) {
|
||||||
updateSummary(overWifiSeekBar.getKey(), false);
|
return getNetworkSeekBarSummary(position);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA);
|
overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA);
|
||||||
overDataPrevious = overDataSeekBar.getValue();
|
overDataPrevious = overDataSeekBar.getValue();
|
||||||
overDataSeekBar.setProgressChangedRunnable(new Runnable() {
|
overDataSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public String seekBarUpdated(int position) {
|
||||||
updateSummary(overDataSeekBar.getKey(), false);
|
return getNetworkSeekBarSummary(position);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL);
|
updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL);
|
||||||
updateIntervalPrevious = updateIntervalSeekBar.getValue();
|
updateIntervalPrevious = updateIntervalSeekBar.getValue();
|
||||||
updateIntervalSeekBar.setProgressChangedRunnable(new Runnable() {
|
updateIntervalSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public String seekBarUpdated(int position) {
|
||||||
updateSummary(updateIntervalSeekBar.getKey(), false);
|
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) {
|
private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) {
|
||||||
int position = seekBarPreference.getValue();
|
int position = seekBarPreference.getValue();
|
||||||
if (position == 0) {
|
seekBarPreference.setSummary(getNetworkSeekBarSummary(position));
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableUpdateInverval() {
|
private void enableUpdateInverval() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user