我有一个使用 CursorAdapter 填充列表的 ListActivity 类。我需要做的是让视图根据列表中元素的值向下滚动到列表中的特定元素。
该列表是带有“截止日期”的项目列表,如果截止日期已经过去,我希望视图滚动过去。因此,在启动时,用户将在顶部看到最近到期日期的项目(视图将滚动到该项目)。如果他们想查看过期日期,可以向上滚动。
我希望我能正确解释这一点,我只是想在我的 ListActivity 中隐藏项目,如果它们的截止日期已经过去,当然基于 Activity 的启动时间。
我有一个使用 CursorAdapter 填充列表的 ListActivity 类。我需要做的是让视图根据列表中元素的值向下滚动到列表中的特定元素。
该列表是带有“截止日期”的项目列表,如果截止日期已经过去,我希望视图滚动过去。因此,在启动时,用户将在顶部看到最近到期日期的项目(视图将滚动到该项目)。如果他们想查看过期日期,可以向上滚动。
我希望我能正确解释这一点,我只是想在我的 ListActivity 中隐藏项目,如果它们的截止日期已经过去,当然基于 Activity 的启动时间。
这有效:
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 );
查看项目以找到断点,然后使用该smoothScrollToPosition
函数动画到该位置
这只是一个想法,但是如果您有一个项目列表并且您可以获取截止日期并且您还有有关当前日期的信息,那么您为什么不调整列表的重力以便它在顶部有当前注释……
或者
如果您在列表视图中有一个笔记列表,在您的活动的 onresume 和 oncreate 方法中,重新排列列表中的笔记,以便将传递的笔记放在列表的底部,这样当前的笔记将始终处于领先地位,您不必担心试图弄乱重力