我可以在两个不同的listView中使用相同的ArrayAdapter吗?如何?

时间:2016-03-04 01:26:17

标签: java android listview android-arrayadapter

我需要在两个活动中使用相同的ArrayAdapter。在MainActivity中,我只需要显示带有isConsumido()= true的项目,而在另一个活动中我需要显示所有项目。

我的MainActivity适配器:

        final ArrayAdapter<ItemCultural> arrayAdapterOrdenado = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, regraDeNegocioSingleton.getListaDeItensSingleton().getListaDeItensCulturaisOrdenados());

现在,我正在使用两个适配器,但是当我在TelaCadastrados的一个适配器项中检查isConsumido()时,MainActivity中的相同项目需要变为不可见,当我在TelaCadastrados上删除项目时,需要删除相同的项目关于MainActivity。

我的TelaCadastrados适配器:

        final ArrayAdapter<ItemCultural> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, regraDeNegocioSingleton.getListaDeItensSingleton().getListaDeItensCulturais());

2 个答案:

答案 0 :(得分:1)

您应该使用2个适配器,但它们可以有一个公共数据集,因此当您更改某些内容时,它会同时影响两个适配器。但请记住在两个适配器中调用notifyDataSetChanged()。

答案 1 :(得分:1)

不共享适配器,共享基础数据集。您有数据对象的列表,并且适配器包装该列表。共享列表,而不是适配器。

您的"serverTemplates":[ { "sequence":"1", } 逻辑是适配器的属性(构造函数参数)。您必须创建一个自定义适配器来添加该行为。

您可以在应用程序类中存储isConsumido() = true列表,因此在每个活动中,您都可以执行类似的操作,

ItemCultural

有人可能会告诉您将数据存储在静态中。不要那样做。