我正在尝试使用CommonsWare的MergeAdapter
类并取得了有限的成功。特别是,我不确定是否1)我的ArrayAdapter
适合使用,2)如果我正确添加它,3)如果我正在做所有必要的事情来连接一切。这个ArrayAdapter适合与CommonsWare MergeAdapter一起使用吗?如果是这样,为什么它不起作用?
这里是我的ArrayAdapter
子类:
class PDLAdapter extends ArrayAdapter<PartnerDisease> {
public PDLAdapter(final Context context) {
super(context, 0);
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.partnerdisease_list_item, null);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.populateViews(getItem(position));
return convertView;
}
}
这里是我的对象StructuredSubDisease
(这个名字是没有意义的,如果你真的认为这是一个包含子病的顶级对象,但不管):
class StructuredSubDisease {
public String headingText;
public ArrayList<PartnerDisease> subDiseases;
public View headingView() {
View returnView = mInflater.inflate(R.layout.partnerdisease_list_item, null);
TextView t = (TextView) returnView.findViewById(R.id.tv_displayname);
t.setText(headingText);
return returnView;
}
}
......这里是“魔法”应该发生的地方。
for (StructuredSubDisease s : subDiseaseList) {
mMergeAdapter.addView(s.headingView()); // @Alex, <--- thing 1
PartnerDiseaseListAdapter adapter = new PartnerDiseaseListAdapter(this);
for (PartnerDisease p : s.subDiseases) {
adapter.add(p);
}
mMergeAdapter.addAdapter(adapter); // <--- and thing 2
}
我Log
盖德计数:
Log.i("mergecount", "" + mMergeAdapter.getCount());
这将返回1
,在那里我会想到2
。
编辑:我忘了提及,这是headingView()
显示与正确的标题文本,但它下面没有列表。
我哪里错了?
为什么期望2? – 2012-04-24 19:30:54
@Alex,因为我添加了两个东西 - headingView()(它被呈现)和'adapter'(它默默地失败)。 – 2012-04-24 19:34:18