小部件onClick中的Android ListView不起作用
Posted
技术标签:
【中文标题】小部件onClick中的Android ListView不起作用【英文标题】:Android ListView in widget onClick not working 【发布时间】:2013-01-12 00:59:30 【问题描述】:我正在尝试使用 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);
我有什么遗漏的吗,或者您还有什么想知道的吗?
感谢所有帮助! :)
【问题讨论】:
【参考方案1】:当您调用setPendingIntentTemplate(...)
时,id
应该是 AdapterView(在本例中为 ListView)。当您调用setOnClickFillInIntent(...)
时,id
应该是项目布局的根视图,如果我正确阅读了您的原始帖子,这就是您已经在做的事情。
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;
【讨论】:
优秀的答案!经过数小时的研究,这正是我一直在寻找的答案。 有没有人有android小部件中listview onclick的完整代码示例?我按照laaptu.wordpress.com/2013/07/19/… 的例子,但是没有onclick 项目。我试图添加 onclick 但它不起作用。 :( @MostafaImran 在这里详细介绍:developer.android.com/guide/topics/appwidgets/…。如果您有具体问题,请打开一个新问题并提供足够的代码和信息以便我们提供帮助。【参考方案2】:@karakuri 的上述回答非常完美。
setPendingIntentTemplate 和 setOnClickFillInIntent 必须一起使用。一个离不开另一个。
【讨论】:
以上是关于小部件onClick中的Android ListView不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Android 小部件按钮 Onclick Toast 消息
Flutter ListVİew 总是在向上或向下滚动时重新渲染