Android Spinner view: разница между setSelection (int position) и setSelection (int position, boolean animate)? - PullRequest
0 голосов
/ 18 мая 2011

Я прочитал документацию, но я не совсем понимаю ... для чего нужен параметр "animate"?

Единственное, что я заметил:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
    if (savedPosition != -1)
    {
        ((Spinner) parent).setSelection(savedPosition );
        savedPosition  = -1;
        return;
    }

   //...
}

... прекрасно работает с "setSelection", но сталкивается с бесконечным циклом / StackOverflowError с setSelection (savePosition, true);

Мне действительно любопытно, почему это так?

С уважением, медуза

1 Ответ

1 голос
/ 18 мая 2011

Ну, он должен делать то, что предлагает название.анимация из текущей позиции в нужную позицию.когда вы используете просто setSelection, изменение более уместно, когда вы пытаетесь убедиться, что пользователь видит изменение (своего рода уведомление об изменении), плюс оно выглядит более плавным.по крайней мере, поэтому я использую его.Что касается анимации, у меня никогда не было с этим проблем.

почему вы используете savePosition вместо позиции для выбора?Может быть, это то, что вызывает цикл.Мое предложение состоит в том, чтобы попытаться сделать это с позиции и посмотреть, если это не удается.ваш код несколько странный ..

Вы, как говорится в комментарии, по какой-то причине вызываете метод снова, потому что я считаю, что animated setSelection делает это, когда выбор фактически установлен.

...