我正在尝试使用 setOnClickFillInIntent
方法使我的 ListView 小部件中的列表行可点击,但是每当我点击 ListItem 时,什么也没有发生。以下是我的代码的一些关键部分:
Intent i = new Intent();
Bundle extras = new Bundle();
extras.putInt(Resource.WIDGET_PACKAGE, position);
i.putExtras(extras);
row.setOnClickFillInIntent(R.id.widget_layout_parent, i);
这是在我的 ViewFactory 中
getView()
的末尾。 Resource.WIDGET_PACKAGE 包含我的包名称,就像任何其他键一样。位置 int 来自 getView()
参数。 R.id.widget_layout_parent
是所有列表项中的父布局。这是我的 WidgetProviders
onUpdate()
的结尾Intent clickIntent = new Intent(context, ItemListActivity.class);
PendingIntent clickPI = PendingIntent.getActivity(context, 0,
clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.widget_layout_parent, clickPI);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds[i],
R.id.widget_list_view);
有什么我遗漏的或者还有什么你想知道的吗?
感谢所有帮助! :)
最佳答案
当您调用 setPendingIntentTemplate(...)
时,id
应该是 AdapterView(在本例中为 ListView)的代码。当您调用 setOnClickFillInIntent(...)
时,id
应该是项目布局的根 View 的代码,如果我正确阅读了您的原始帖子,这就是您已经在做的事情。
public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds) {
/* ... */
widget.setPendingIntentTemplate(R.id.appwidget_listview, clickPI);
/* ... */
}
public RemoteViews getViewAt(int position) {
/* ... */
row.setOnClickFillInIntent(R.id.widget_layout_parent, intent);
/* ... */
return row;
}