BaseAdpater 所做的只是巩固 AbsListView 所需的回调。ArrayAdater 是一个更全面的适配器,它可以将项目列表自动膨胀到 TextView 中。
对于您的情况,我建议扩展 BaseAdapter:
class MyAdapter extends BaseAdapter {
Vector<String> names;
Vector<String> nicks;
public MyAdapter(Vector<String> nms, Vector<String> nks) {
if (nms.size() != nks.size())
throw new RuntimeException("oops! Wrong sizes for vectors");
name = nms;
nicks = nks;
}
@Override
public int getCount() {
return names.getSize() && nicks.getSize();
}
@Override
public String getItem() {
// Can't really implement with two vectors.
return null;
}
@Override
public getView(int pos, View convert, ViewGroup mommy) {
LinearLayout ll = (LinearLayout)convert;
if (ll == null)
// Inflate the linear layout - preferrably from resources
ViewHolder vh = (ViewHolder)ll.getTag();
if (vh == null)
// Inflate ViewHolder
vh.tvname.setText(names.get(pos));
vh.tvnick.setText(nicks.get(pos));
return ll;
}
class ViewHolder {
TextView tvname, tvnick;
}
}