diff --git a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java index 9d2f94dcb..c1afa40d7 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java @@ -18,8 +18,6 @@ package de.dennisguse.opentracks; import android.os.Bundle; import android.util.Log; -import android.view.KeyEvent; -import android.view.MotionEvent; import android.view.View; import android.widget.ArrayAdapter; @@ -96,18 +94,9 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit iconValue = track.getIcon(); } - viewBinding.trackEditActivityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(this, iconValue)); - viewBinding.trackEditActivityTypeIcon.setOnTouchListener((v, event) -> { - if (event.getAction() == MotionEvent.ACTION_UP) { - ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString()); - } - return true; - }); - viewBinding.trackEditActivityTypeIcon.setOnKeyListener((v, keyCode, event) -> { - if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { - ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString()); - } - return true; + setActivityTypeIcon(iconValue); + viewBinding.trackEditActivityTypeIcon.setOnClickListener(v -> { + ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString()); }); viewBinding.trackEditDescription.setText(track.getDescription()); @@ -156,7 +145,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit private void setActivityTypeIcon(String iconValue) { this.iconValue = iconValue; - TrackIconUtils.setIconSpinner(viewBinding.trackEditActivityTypeIcon, iconValue); + viewBinding.trackEditActivityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(iconValue)); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java index 1ec55f4e0..9ad004de0 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java @@ -5,9 +5,7 @@ import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.util.Pair; -import android.view.KeyEvent; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -110,18 +108,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi handlerUpdateUI = new Handler(); - viewBinding.statsActivityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(getActivity(), "")); - viewBinding.statsActivityTypeIcon.setOnTouchListener((v, event) -> { - if (event.getAction() == MotionEvent.ACTION_UP) { - ((TrackRecordingActivity) getActivity()).chooseActivityType(category); - } - return true; - }); - viewBinding.statsActivityTypeIcon.setOnKeyListener((v, keyCode, event) -> { - if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { - ((TrackRecordingActivity) getActivity()).chooseActivityType(category); - } - return true; + + viewBinding.statsActivityTypeIcon.setOnClickListener(v -> { + ((TrackRecordingActivity) getActivity()).chooseActivityType(category); }); sensorsAdapter = new SensorsAdapter(getContext()); @@ -351,7 +340,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi // Set activity type { viewBinding.statsActivityTypeIcon.setEnabled(isRecording); - TrackIconUtils.setIconSpinner(viewBinding.statsActivityTypeIcon, trackIconValue); + viewBinding.statsActivityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(trackIconValue)); } // Set time diff --git a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java index a8507c730..c0fe62be9 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java @@ -19,12 +19,10 @@ package de.dennisguse.opentracks.settings; import android.content.Context; import android.os.Bundle; import android.util.AttributeSet; -import android.view.KeyEvent; -import android.view.MotionEvent; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; -import android.widget.Spinner; +import android.widget.ImageView; import androidx.preference.DialogPreference; import androidx.preference.PreferenceDialogFragmentCompat; @@ -63,7 +61,7 @@ public class ActivityTypePreference extends DialogPreference { public static class ActivityPreferenceDialog extends PreferenceDialogFragmentCompat { private AutoCompleteTextView textView; - private Spinner spinner; + private ImageView iconView; static ActivityPreferenceDialog newInstance(String preferenceKey) { ActivityTypePreference.ActivityPreferenceDialog dialog = new ActivityTypePreference.ActivityPreferenceDialog(); @@ -87,30 +85,21 @@ public class ActivityTypePreference extends DialogPreference { textView.setAdapter(adapter); textView.setOnItemClickListener((parent, v, position, id) -> { String iconValue = TrackIconUtils.getIconValue(context, (String) textView.getAdapter().getItem(position)); - TrackIconUtils.setIconSpinner(spinner, iconValue); + updateIcon(iconValue); }); textView.setOnFocusChangeListener((v, hasFocus) -> { if (!hasFocus) { String iconValue = TrackIconUtils.getIconValue(context, textView.getText().toString()); - TrackIconUtils.setIconSpinner(spinner, iconValue); + updateIcon(iconValue); } }); - String iconValue = TrackIconUtils.getIconValue(context, category); - spinner = view.findViewById(R.id.activity_type_preference_spinner); - spinner.setAdapter(TrackIconUtils.getIconSpinnerAdapter(context, iconValue)); - spinner.setOnTouchListener((v, event) -> { - if (event.getAction() == MotionEvent.ACTION_UP) { - showIconSelectDialog(); - } - return true; - }); - spinner.setOnKeyListener((v, keyCode, event) -> { - if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { - showIconSelectDialog(); - } - return true; + iconView = view.findViewById(R.id.activity_type_preference_spinner); + iconView.setOnClickListener((it) -> { + showIconSelectDialog(); }); + + updateIcon(TrackIconUtils.getIconValue(context, category)); } private void showIconSelectDialog() { @@ -129,15 +118,13 @@ public class ActivityTypePreference extends DialogPreference { } } - /** - * Updates the value of the dialog. - * - * @param iconValue the icon value - */ public void updateUI(String iconValue) { - TrackIconUtils.setIconSpinner(spinner, iconValue); textView.setText(getActivity().getString(TrackIconUtils.getIconActivityType(iconValue))); textView.clearFocus(); } + + private void updateIcon(String iconValue) { + iconView.setImageResource(TrackIconUtils.getIconDrawable(iconValue)); + } } } diff --git a/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java b/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java index a97bf6e13..6eed23eda 100644 --- a/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java @@ -18,10 +18,6 @@ package de.dennisguse.opentracks.util; import android.content.Context; import android.util.Pair; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.Spinner; import androidx.annotation.NonNull; @@ -207,35 +203,6 @@ public class TrackIconUtils { return UNKNOWN; } - public static void setIconSpinner(Spinner spinner, String iconValue) { - ArrayAdapter adapter = (ArrayAdapter) spinner.getAdapter(); - StringBuilder stringBuilder = adapter.getItem(0); - stringBuilder.delete(0, stringBuilder.length()); - stringBuilder.append(iconValue); - adapter.notifyDataSetChanged(); - } - - public static ArrayAdapter getIconSpinnerAdapter(final Context context, String iconValue) { - return new ArrayAdapter(context, android.R.layout.simple_spinner_item, new StringBuilder[]{new StringBuilder(iconValue)}) { - @NonNull - @Override - public View getView(int position, View convertView, @NonNull android.view.ViewGroup parent) { - ImageView imageView; - if (convertView != null) { - imageView = (ImageView) convertView; - } else { - imageView = new ImageView(getContext()); - } - - imageView.setImageResource(TrackIconUtils.getIconDrawable(getItem(position) + "")); - - int padding = ResourceUtils.dpToPx(getContext(), 1); - imageView.setPaddingRelative(padding, padding, padding, -padding); - return imageView; - } - }; - } - /** * Returns true if the activity type is in the list. * diff --git a/src/main/res/layout/preference_activity_type.xml b/src/main/res/layout/preference_activity_type.xml index 9107af297..b7f6ee30e 100644 --- a/src/main/res/layout/preference_activity_type.xml +++ b/src/main/res/layout/preference_activity_type.xml @@ -31,7 +31,7 @@ limitations under the License. android:layout_weight="1" android:hint="@string/track_edit_activity_type_hint" /> - - -