Android List View установлен по умолчанию без анимации

У меня есть представление списка таблиц в моем приложении. и пользователь может добавить в список больше данных. Я хотел бы показать позицию просмотра списка по умолчанию во вновь добавленных данных. однако, я использую, если я использую smoothScrollToPosition, анимация медленно прокручивается вниз, что нежелательно. Вы, ребята, знаете, как установить позицию по умолчанию без этой анимации?

Спасибо большое за ответ! С уважением Пенни

Ответы

Ответ 1

Я думаю, что ListView.setSelection(int position) - это то, что вам нужно.

Ответ 2

В моем приложении у меня была аналогичная потребность. Я использовал getListView().setSelection() для определения положения списка, он отлично работает без прокрутки.

Если вы считаете, что у вас есть 2 действия, ActivityA, который показывает список из курсора и ActivityB, который имеет форму для добавления нового элемента. По завершении ActivityB должен вернуть идентификатор курсора элемента, тогда ActivityB может получить позицию элемента с идентификатором и установить положение, как этот код:

/* check intent Id to scroll to the right item after update or delete */
if ( getIntent().hasExtra( ITEMID_INTENT_KEY ) )
{
    long id = getIntent().getLongExtra( ITEMID_INTENT_KEY, 0 );
    int position = getPositionFromId( id );
    getListView().setSelection( position > 0 ? position - 1 : 0 );
    getIntent().removeExtra( ITEMID_INTENT_KEY );
}

(...)

private int getPositionFromId( long id )
{
    mCursor.moveToFirst();
    do
    {
        Long cursorId = mCursor.getLong( mCursor.getColumnIndexOrThrow( yourIdColumn ) );
        if ( cursorId.longValue() == id )
        {
            return mCursor.getPosition();
        }
    }
    while ( mCursor.moveToNext() );
    return 0;
}