如何滚动到ListActivity中的子元素

时间:2011-03-17 16:25:07

标签: android listactivity android-scroll

我有一个ListActivity类,它使用CursorAdapter填充列表。 我需要做的是让视图向下滚动到列表中的特定元素,基于列表中元素的值。

列表是具有“截止日期”的项目列表,如果截止日期已经过去,我希望视图滚过它。因此,在启动时,用户将在顶部看到最近到期日期的项目(视图将滚动到此项目)。如果他们想查看过期日期,他们可以向上滚动。

我希望我能正确解释这个问题,我只是想在我们的ListActivity中隐藏项目,如果他们的截止日期已经过去了,那么根据活动的推出时间当然。

3 个答案:

答案 0 :(得分:2)

这有效:

ListView list = getListView();
int count = list.getCount();

long now = new GregorianCalendar().getTimeInMillis();
int scrollTo = 0;

for ( int i = 0; i < count; i++ ) {
    Cursor cursor = (Cursor)list.getItemAtPosition( i );
    long endtime = cursor.getLong( "endtime" );
    if ( endtime > now ) {
        //this is the one we want to scroll to
        scrollTo = i;
        break;
    }
}
temp.setSelection( scrollTo );

答案 1 :(得分:0)

查看项目以找到断点,然后使用smoothScrollToPosition函数设置该位置的动画

Android Developer Site : AbsListView#smoothScrollToPosition

答案 2 :(得分:0)

这只是一个想法,但如果您有一个项目列表,并且您可以获取截止日期,并且您还有当前日期的信息,为什么不调整列表的重力以使其具有当前注释在顶部....

OR

如果列表视图中有一个注释列表,在活动的onresume和oncreate方法中,重新调整列表中的注释,以便传递的注释放到列表的底部,就像当前的那样笔记总是在最重要的,你不必担心试图弄乱引力