Update TextView directly

This commit is contained in:
ByteHamster 2018-06-10 22:12:06 +02:00
parent c7e692e9e5
commit 1c89076393
2 changed files with 37 additions and 24 deletions

View File

@ -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);
}
}

View File

@ -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() {