2011-04-13 92 views
0

当用户第一次加载列表视图时,它从sqlitedb中提取日期列并填充列表。当他们点击某个日期时,我将该日期放入一个变量中。然后我想显示一个数组中的项目列表。然后,当他们点击其中一个项目时,它再次从sqlitedb中提取数据并填充。来回更改listview适配器?

所以初始列表视图:
12-2010
01-2011
03-2011
04-2011

点击任何日期,设置mDate =单击项目
改变列表视图中显示什么在一个数组,那么它看起来的样子

选项1
选项2
选项3
选项4

点击选项,设置mOption =点击项目
变化的ListView基于从DB mOption提取数据。

我知道如何从列表视图中获取来自每个源的信息,我不清楚的是处理这些适配器开关的最佳方法。有什么建议么?

+0

该数据是否修复?即在应用程序的生命周期中您有三组静态数据,或者数据库可能随时发生变化? – Aleadam 2011-04-13 22:16:30

+0

我有同样的问题:是否更好一个listadapter与两个不同的数据集有两个适配器。也可以选择在自定义列表视图适配器中使用这两组数据,并使适配器具有切换功能(在Android中执行刷新/无效/无论它们是什么) – 2012-10-04 15:52:57

回答

5

有两种选择。您可以有多个ListView,每个都有自己的适配器,您可以在它们之间切换,也可以有多个适配器,您只需将其设置为ListView即可。就我个人而言,我会选择1,所以你可以把ListView s在ViewSwitcher和动画的过渡。

0

如果数据随时可能发生变化,我相信最廉价和最可重复使用的方法是使用:

public void updateContents (ListView lv, List<String> list) { 
    ArrayAdapter<String> myAdapter = lv.getAdapter(); 
    myAdapter.clear(); 
    myAdapter.AddAll (list); 
    lv.setAdapter(myAdapter); 
} 

但是,在安卓4.0或更高版本这仅适用。 2.3和更低版本不支持ArrayAdapter.AddAll(object);