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

时间:2015-07-05 07:40:29

标签: android listview android-listview android-adapter android-adapterview

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

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);
}

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

但是大部分时间这对你的用户界面来说还不够,你想在你的第二个例子中添加一个复选框,所以android OS让你能够制作你自己的自定义单元格(列表中的每一行)这就是为什么你会发现自己需要扩展数组适配器

在你使用的第一个例子中

android.R.layout.simple_list_item_1

这是一个仅包含textview的布局

并提供数据源mCrimes

因此,当您扩展数组适配器时,您也可以使用自己的布局来表示单元格和将填充列表的数据源

希望为您澄清并欢迎乘坐:)