通用ListView适配器

时间:2012-07-16 17:39:28

标签: java android android-layout android-listview android-adapter

我正在尝试创建一个自定义Adapter,它可以处理任何类型的布局。通用我指的是在适配器中设置的任何类型的数据,并且可以使用任何类型的布局来为项目设置事件监听器。

例如:

我有联系人列表和国家/地区列表。联系人列表在其布局中有四个项目,即人物图像,名称,编号和复选框。国家/地区列表包含CountryName(TextView)和复选框。

是否可以使用相同的适配器和适配器处理所有类型的项目?

我希望点击任何项目后刻度图像会重置。

1 个答案:

答案 0 :(得分:3)

如果您有一个具有不同对象的List,它可以是不同类型并且需要显示不同的视图。这样做:

让对象自己定义视图。在每个对象上实现接口ViewProvider。此接口应提供方法getView(),然后可以在适配器中调用该方法。

现在,适配器只能将元素从ViewProviders的列表中取出,并调用方法getView来获取视图。

您不必担心视图的回收,因为视图存储在每个ViewProvider中,并且只会创建一次。然后,也可以在Object端而不是在适配器中更新字段(如果有)。但您必须通过调用notifyDataSetChanged()

通知适配器有关数据更改的信息