我有一个简单的主屏幕小部件,它显示项目列表。由于我想支持较旧的设备,而不是ListView,因此我使用了一系列“模拟”ListView的TextView对象。小工具:区分具有相同ID的视图上的点击
它工作得很好,但我想为这些项目分配一个点击侦听器。在听众中,我想区分他们,并采取措施取决于项目的内容。
如何做到这一点?由于setOnClickPendingIntent
需要视图的ID,因此我无法为单个项目分配单独的意图 - 它们都共享相同的ID,因此处理程序不会知道哪个项目被点击。我只能从XML布局实例化RemoteViews,所以我不能添加具有不同ID的项目(我需要创建很多布局文件,只有布局ID不同)。
由于Honeycomb有setOnClickFillInIntent
方法以可接受的方式处理我的问题,但如果我想要我的小工具在姜饼上工作,我不能使用它。
目前,我有一个小部件的布局文件,其中一个空容器和其他文件用于行布局。在小部件更新期间,我使用RemoteViews.addView(ID,RemoteViews)将行插入到该容器中。从我对你的理解中回答,你是否建议我应该在小部件XML中用不同的ID对一些行进行硬编码并停止使用addView(然后,为每个“行”设置clickIntents)? – user1234567 2012-02-12 21:03:44
@ user1234567:那么,'addView()'逻辑对你没什么帮助。对于给定的应用部件大小,您只能拥有很多行。而且,您必须将此接口硬连接。而且,由于您无论如何都需要唯一的小部件ID,因此您可以手动将N行克隆到主应用小部件布局中,并提供唯一的ID。 – CommonsWare 2012-02-12 21:08:12
好吧,这可能会更快一些,因为每次更新只会扩充一次XML,并且在此之后不会修改它的视图树(就像我以前用addView()方法)。谢谢! – user1234567 2012-02-12 21:11:40