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()
適切な見出しテキストで表示されるということです、しかしその下にリストはありません。
どこが間違っているのですか?