是的,这对于 Widget ListView 是可能的。我花了几个星期的间歇性尝试和测试,但这是我学到的。
1) 小部件使用RemoteViews,因此只能使用普通视图的一部分功能(在这种情况下为 ListView)。转到ListView 源并搜索@android.view.RemotableViewMethod。这些注释决定了一个小部件最终可以使用什么。
2) 检查RemoteViews 源并注意第 776 行的isAnnotationPresent检查。当您进行未使用RemotableViewMethod注释的方法调用时,您经常会在 LogCat 中看到一条错误记录到该行。
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);