Непонятная проблема с выбором элемента spinner Android

203
17 января 2019, 13:30

Пытаюсь внедрить spinner у себя в приложении. В списке есть три пункта, и по непонятной мне причине воспринимается выбор только 2,3 если начинать отсчет с 1. Вот мой предыдущий вопрос по этой теме - Как сделать сортировку списка в Android?. Вот что у меня получилось на данный момент:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 0:
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
break;
case 1:
DateSort_theme ds = new DateSort_theme();
try {
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
Collections.sort(messageArrayList, ds);
} catch (Exception ignored) {
}
break;
case 2:
DateSort_sender ds2 = new DateSort_sender();
try {
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
Collections.sort(messageArrayList, ds2);
} catch (Exception ignored) {
}
break;
}

вроде все одинаковое у всех пунктов но почему-то выбирается только 2,3. А я хочу сделать, чтобы по умолчанию был выбран 1 пункт и дальше уже смотреть если 1,2,3 выбирается то что-то делать. Пробовал вставить еще дополнительно default в блоке switch но он тоже не выбирает по-умолчанию и вообще не видно что он работает. Наверное у меня где-то ошибка но не могу понять где именно.

UPDATE

mSwipeRefreshLayout.setRefreshing(true);
if (response.isSuccessful()) {
Integer count = Objects.requireNonNull(response.body()).getCount();
if (count > 0) {
recyclerView.setVisibility(View.VISIBLE);
spinner.setVisibility(View.VISIBLE);
/* messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);*/
spinner.setSelection(0);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 0:
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
break;
case 1:
DateSort_theme ds = new DateSort_theme();
try {
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
Collections.sort(messageArrayList, ds);
} catch (Exception ignored) {
}
break;
case 2:
DateSort_sender ds2 = new DateSort_sender();
try {
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
Collections.sort(messageArrayList, ds2);
} catch (Exception ignored) {
}
break;
default:
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
spinner.setSelection(2);
messageArrayList = (ArrayList<Message>) Objects.requireNonNull(response.body()).getMessages();
adapter = new ListAdapter(messageArrayList, getActivity(), type);
recyclerView.setAdapter(adapter);
mSwipeRefreshLayout.setRefreshing(false);
}
});
} else if (count == 0) {
recyclerView.setVisibility(View.GONE);
spinner.setVisibility(View.GONE);
ivPicture = Objects.requireNonNull(getActivity()).findViewById(R.id.ivNoMess);
ivPicture.setVisibility(View.VISIBLE);
}
Answer 1
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           // Тут вешаешь Switch
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
           // Тут выполняешь код, если ничего не выбрано, например код первого кейса
        }
    });

Вообще Switch должен срабатывать у тебя, так как position по умолчанию равна 0, тут возникает вопрос где ты устанавливаешь слушателя на spinner? Слушатель должен быть установлен в onCreate

READ ALSO
Как напечатать буквы в консоле через звездочки?

Как напечатать буквы в консоле через звездочки?

Есть 3 буквы на входе "А В В" Нужно вывести в консоль? Так должна выглядеть буква

211
Не подключаются несколько событий onTextChanged на каждый EditText

Не подключаются несколько событий onTextChanged на каждый EditText

Когда я пытаюсь присвоить одно событие onTextChanged к одному EditText, чтобы значение из этого EditText записалось в другой EditText, всё работает хорошоНо...

207
Программный отступ margin

Программный отступ margin

нужно отступить от нижнего правого угла, но если в view посадить bottom и right любое значение, то ничего не происходит, а отступ идет, только если...

157
Иннициализация логина юзера

Иннициализация логина юзера

Ситуация следующая: Юзер логинится в личный кабинет, переходя по рестам в логах могу отловить его логинВ одном из классов, метод SecurityUtils

128