Android列表视图设置默认位置而不使用动画

15

我的应用中有一个表格列表视图,用户可以在该列表中添加更多数据。我想在新添加的数据处显示默认列表视图位置。但是,如果使用smoothScrollToPosition,会出现缓慢滚动的动画效果,这并不理想。如何在没有该动画的情况下设置默认位置?

2个回答

30

我认为ListView.setSelection(int position)就是您所需要的。


6
在我的应用程序中,我有类似的需求。我使用了getListView().setSelection()来定义列表的位置,它在不滚动的情况下运行良好。
如果你考虑有两个活动,ActivityA显示来自游标的列表,而ActivityB具有添加新项的表单。完成后,ActivityB应返回项游标ID,然后ActivityB可以检索具有该ID的项目位置,并设置位置,例如此代码:
/* 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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接