2

我有一个集合,view widgetlistview显示从数据库中获取的数据。我已经getViewAt(int position)RemoteViewsServiceFactory. 根据从返回的数字调用此方法getCount()

但问题是listview重复中的行,因为在方法中传递的位置getViewAt()已磨损。假设如果有 6 个项目,那么有时位置的值如果 0,0,1,2,2,3,4,3,5 有时是 0,0,2,1,4,4,5,2,2 等等上。我从来没有得到正确的序列,即 0、1、2、3、4、5。

但是,第一次添加小部件时不会发生这种情况。仅当我调用notifyAppWidgetViewDataChanged() 方法以使用新数据更新小部件时才会发生这种情况。

请提出解决此问题的方法。提前致谢。如果您需要更多信息,请告诉我。热切地等待您的回复。

4

2 回答 2

0

清除adapter然后填充它。问题将得到解决

编辑 如何从列表中清除自定义适配器并重新初始化

CAdpater adapter = new CAdpater(this, mylist1);
list.setAdapter(adapter);
于 2013-05-22T21:51:23.627 回答
0

好的,我遇到了这个问题,刚刚发现它是什么。我怀疑其他面临这个问题的人正在犯同样的错误/疏忽。

当我打开“MainActivity”以显示数据库内容列表时,我只看到列表中有两个条目。然后,当我查看小部件时,每次打开应用程序时列表的大小都会增加一倍,即使从“MainActivity”中看到的条目数没有变化。

因为我分叉了原始代码,所以我没有意识到每次打开“MainActivity”时它都会在数据库中添加条目,然后在显示它自己的列表时过滤它们。

所以解决方案是在从小部件查询数据库时使用相同的过滤器。

于 2016-11-10T11:29:48.767 回答