我已经问过自己上面的问题,到目前为止还没有找到真正的解决方案。
下面您可以看到{strong} ListView
持有Strings
的自定义适配器的两种实现。第一个实现使用Adapter
中的附加列表值,就像我在许多ListView
教程中看到的那样。 (例如vogella-listview-tutorial)
public class CustomAdapter extends ArrayAdapter<String> {
private ArrayList<String> mList;
public CustomAdapter(Context context, List< String > objects) {
super(context, 0, objects);
mList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String item = mList.get(position);
// ... do stuff ...
return convertView;
}
}
下面的第二个实现只使用已经传递给List
的{{1}} Strings
,而不需要额外的列表。相反,使用Adapter
Adapters
方法:
getItem(int pos)
现在我的问题:
当您只需使用适配器public class CustomAdapter extends ArrayAdapter<String> {
public CustomAdapter(Context context, List< String > objects) {
super(context, 0, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String item = getItem(position);
// ... do stuff ...
return convertView;
}
}
方法时,在List
内使用附加 CustomAdapter
的原因是什么原因并节省额外的getItem(int pos)
?
答案 0 :(得分:1)
由于您要扩展ArrayAdapter
扩展BaseAdapter
,因此您无需拥有数据集的副本,但将其提供给super
就足够了。如果您扩展另一个适配器BaseAdapter
,则必须覆盖
getCount()
getItem(int)
getView(int position, View convertView, ViewGroup parent)
getItemId(int)
访问数据集的所有要求。