是否可以在主屏幕上的应用小部件的列表视图中禁用某些项目?
现在,我正在为列表视图使用 PendingIntent 模板,然后使用 fillIntent 填充每一行的意图。我想要做的是当一个项目被按下以获取标题和其他类型的项目时,不显示选择器背景。在普通列表视图中,您可以使用isEnabled解决它,但它在RemoteViewsFactory中不存在。
我的 AppWidgetProvider 看起来像这样:
public class StreamsWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
//set service for list view
Intent listIntent = new Intent(context, StreamsWidgetService.class);
listIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
listIntent.setData(Uri.parse(listIntent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.streamItemsList, listIntent);
Intent intent = new Intent(context, StreamsWidgetProvider.class);
intent.setAction(ACTION_START_ACTIVITY);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
views.setPendingIntentTemplate(R.id.streamItemsList, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
这是在上述 appWidgetProvider 连接的 RemoteViewsService 中实例化的 RemoteViewsFactory。
private class StreamItemWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
...
@Override
public RemoteViews getViewAt(int position) {
...
if(isEnabled) {
...
Intent intent = new Intent();
intent.putExtra(StreamsWidgetProvider.BROADCAST_PARAM_ITEM_ID, item.getId());
...
rv.setOnClickFillInIntent(R.id.streamItemRowId, intent);
}
...
return item;
}
...
}
是否可以获得与 ListView 适配器相同的功能?我可以以某种方式删除某些行的 pendingIntent 吗?