2013-07-08 320 views
1

我有一个AppWidget的列表视图。我希望在用户将listview添加到主屏幕或刷新小部件后,让listview从特定位置开始。我试图使用setScrollPostion,但它不起作用。如何在Android AppWidget中设置ListView的初始滚动位置?

e.g:

RemoteViews视图=新RemoteViews(context.getPackageName(),R.layout.my_widget);

......

views.setScrollPosition(R.id.listview_in_widget,1000); appWidgetManager.updateAppWidget(appWidgetId,views);

小部件仍显示第一项。

我会很感激,如果有人可以给我一些提示如何做到这一点?

回答

1

所以,你应该叫setScrollPosition方法是这样的:

views.post(new Runnable() { 

    @Override 
    public void run() { 
     views.setScrollPosition(R.id.listview_in_widget, 1000);  
    } 
}); 

views.postDelayed方法。

+0

我很抱歉,在远景中没有scrollto或setselection。其实,我试图在appwidget中实现一个循环列表视图。我可以在普通列表视图中执行此操作,因为我可以在普通列表视图中执行setselection。我正试图在主屏幕上实现日历appwidget,以便用户可以上下滚动。但我有问题设置远程列表视图的初始位置。 – David

+0

抱歉我起初误解了你的问题,所以我编辑了我的答案,希望它对你有所帮助。 – koso

+0

有没有办法在appwidget/remoteview中获取滚动位置? –

0

是的,这是可能的Widget ListView。我花了几个星期的间歇性尝试和测试,但这是我所学到的。

1)Widget利用RemoteViews,结果只能使用普通视图(本例中为ListView)的功能子集。转到ListView source并搜索@ android.view.RemotableViewMethod。这些注释决定了一个小部件最终可以使用的内容。

2)检查RemoteViews source并注意776行isAnnotationPresent检查。您经常会看到LogCat中记录的错误,该错误在您进行方法调用时没有用RemotableViewMethod进行注释。

3)您需要确保在调用RemoteViews实例的方法后,调用updateAppWidget。这里是一个例子:

//update list item pos 
RemoteViews remoteViews = new RemoteViews(_context.getPackageName(), R.layout.widget); 
remoteViews.setScrollPosition(R.id.widget_nodes_list, newPos); 

//apply pos 
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(_context); 
appWidgetManager.updateAppWidget(_appWidgetId, remoteViews); 
相关问题