我正在嘗試使用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