我需要在两个活动中使用相同的 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);
有人可能会告诉您以静态方式存储数据。别这样。