为什么我们在 android 中每个 class 使用单个适配器?

Why do we use single adapter per class in android?

我刚刚开始使用 Big Nerd Ranch Guide 学习 android。在一个项目中,我们要实现一个 listView 并使用 ArrayAdapter 从数组中获取数据,因为犯罪 objects 存储在某个列表中。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setTitle(R.string.crimes_title);
mCrimes = CrimeLab.get(getActivity()).getCrimes();
ArrayAdapter<Crime> adapter =
new ArrayAdapter<Crime>(getActivity(),
android.R.layout.simple_list_item_1,
mCrimes);
setListAdapter(adapter);
}

之后,我们要创建自定义列表来显示标题以及复选框和日期,因此我们创建了一个自定义布局。现在,我们为此使用了不同的适配器。

private class CrimeAdapter extends ArrayAdapter<Crime> {
public CrimeAdapter(ArrayList<Crime> crimes) {
super(getActivity(), 0, crimes);
}

我的问题是为什么我们不能使用我们之前使用的相同适配器?我的意思是我们可以给它新的值或创建一个新的 object.I 在互联网上搜索并发现我们可以创建 multiple adapters with some restrictions. 为什么我们将它扩展到 ArrayAdapter?我们不能像以前那样通过创建适配器来做吗? 请详细解释一下,因为我才刚刚开始。

谢谢。

让我们谈谈 android 中的列表视图适配器实现 首先,在您的第一个示例中,您使用了 android 中列表视图适配器的默认实现,它为您提供文本列表视图

但大多数时候,这对于您的用户界面来说还不够,您想要像第二个示例中那样添加一个图像复选框,因此 android OS 让您能够制作自己的自定义单元格(列表中的每一行)这就是为什么您会发现自己需要扩展数组适配器

在您的第一个示例中,您使用了

android.R.layout.simple_list_item_1

这是一个仅包含 textview 的布局

并且您提供了数据源 mCrimes

因此,当您扩展数组适配器时,您会做同样的事情,您会提供您自己的布局,它代表单元格和将填充您的列表的数据源

希望为您澄清并欢迎加入:)