2011-03-31 85 views
14

我有我的應用程序中的表列表視圖。用戶可以在列表中添加更多數據。我想在新添加的數據中顯示默認列表視圖位置。然而,我使用如果我使用smoothScrollToPosition,有動畫慢慢向下滾動,這是不可取的。你們知道如何設置沒有動畫的默認位置嗎?Android列表視圖設置默認位置沒有動畫

非常感謝! 關於 便士

回答

25

我認爲ListView.setSelection(int position)是你所需要的。

5

在我的應用程序中,我有類似的需求。我用getListView().setSelection()來定義列表的位置,它運行良好,沒有滾動。

如果您認爲有2個活動,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; 
}