【发布时间】:2012-04-24 19:23:44
【问题描述】:
我正在尝试使用 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
}
我有Logged 数:
Log.i("mergecount", "" + mMergeAdapter.getCount());
这将返回 1,我希望在此返回 2。
编辑:我忘了提,这样做的结果是headingView() 显示了正确的标题文本,但它下面没有列表。
我哪里错了?
【问题讨论】:
-
@Alex,因为我添加了两件事 -
headingView()(已渲染)和adapter(静默失败)。
标签: android android-arrayadapter android-adapter listadapter commonsware-cwac