我正在尝试使用 CommonsWare 的MergeAdapter
课程并取得了有限的成功。特别是,我不确定 1)我ArrayAdapter
是否适合使用,2)我是否正确添加它,以及 3)我是否正在做所有必要的事情来连接所有东西。
这是我的子类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()
是显示了正确的标题文本,但它下面没有列表。
我哪里错了?