我可以在两个不同的列表视图中使用相同的 ArrayAdapter 吗?如何



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

我的主要活动适配器:

        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 个适配器,但它们可以具有通用数据集,因此当您更改某些内容时,它会同时影响两个适配器。但请记住在两个适配器中调用 notifyDataSetChanged()。

不要共享适配器,共享底层数据集。您有数据对象的列表,适配器包装该列表。共享列表,而不是适配器。

isConsumido() = true逻辑是适配器的属性(构造函数参数)。您必须创建自定义适配器才能添加该行为。

您可以将ItemCultural列表存储在应用程序类中,因此在每个活动中,您可以执行以下操作:

List<ItemCultural> data = ((MyApplication)getApplication).getData();
final ArrayAdapter<ItemCultural> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, data);

有人可能会告诉您以静态方式存储数据。别这样。

相关内容

最新更新