Мне также нужно было решить эту проблему.То, что я хотел сделать, это иметь Spinner, который имеет диапазоны дат с настраиваемым параметром диапазона.Строки будут выглядеть примерно так:
10 апреля - 10 мая 10
10 марта - 10 апреля
10 февраля - 10 марта
Пользовательский диапазон
проблема заключается в том, что если пользователь выбирает пользовательский диапазон, а затем хочет изменить свой пользовательский диапазон, ему необходимо выбрать другой диапазон, а затем снова выбрать параметр пользовательского диапазона.Я хотел, чтобы пользователь снова мог выбрать «Пользовательский диапазон», чтобы снова можно было отобразить диалоговое окно пользовательского диапазона.
Я субклассировал Spinner и создал моего собственного слушателя.Код переключает выбор, но затем немедленно переключает его, чтобы ничего не было выбрано.В моем слушателе я просто игнорирую любую позицию, которая меньше нуля.
Spinner просто отображает последний выбранный элемент.Я создал собственный настраиваемый адаптер и указал, что отображать для каждого представления, но в этом нет необходимости.Вот как я подклассифицировал Spinner.
package com.example.widget;
import android.content.Context;
import android.widget.Spinner;
public class DateRangeSpinner extends Spinner {
private ItemSelectionListener listener;
public DateRangeSpinner(Context context) {
super(context);
}
/**
* This listener will be fired every time an item is selected,
* regardless of whether it has already been selected or not.
*
* @param l
*/
public void setOnItemSelectedListener(ItemSelectionListener l) {
listener = l;
}
public void removeOnItemSelectedListener() {
listener = null;
}
@Override
public void setSelection(int position) {
setSelection(position, true);
}
@Override
public void setSelection(int position, boolean animate) {
if (listener != null) {
listener.onItemSelected(position);
}
super.setSelection(position, animate);
super.setSelection(-1, animate);
}
public interface ItemSelectionListener {
public void onItemSelected(int position);
}
}
Надеюсь, это поможет!