我有一个集合view widget
,即listview
来显示从DB获取的数据。我在getViewAt(int position)
中实施了RemoteViewsServiceFactory
方法。根据{{1}}返回的数字调用此方法。
但问题是getCount()
中的行会重复,因为listview
方法中传递的位置是假的。假设有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。
但是,第一次添加窗口小部件时不会发生这种情况。只有当我调用getViewAt()
()方法用新数据更新窗口小部件时才会发生这种情况。
请提供解决此问题的方法。提前致谢。如果您需要更多信息,请告诉我。急切地等待你的回复。
答案 0 :(得分:0)
清除adapter
,然后填充它。
问题将得到解决
修改强> 如何从列表中清除自定义adpater并重新初始化
CAdpater adapter = new CAdpater(this, mylist1);
list.setAdapter(adapter);
答案 1 :(得分:0)
好的,我有这个问题,只是发现它是什么。我怀疑面临这个问题的其他人也犯了同样的错误/疏忽。
当我打开“MainActivity”以显示数据库内容列表时,我只看到列表中的两个条目。然后,当我查看窗口小部件时,每次打开应用程序时,它都会使列表的大小加倍,即使从“MainActivity”看到的条目数没有变化。
由于我分叉了原始代码,我没有意识到每次打开“MainActivity”时都会在数据库中添加条目,然后在显示它自己的列表时过滤它们。
因此解决方案是在从小部件查询数据库时使用相同的过滤器。