私は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
をGEDています
Log.i("mergecount", "" + mMergeAdapter.getCount());
これは私が2
を期待1
を返します。
EDIT:忘れてしまったのは、headingView()
に適切な見出しのテキストが表示されていて、その下に一覧がないということです。
どこが間違っていますか?
なぜ2を期待していますか? –
@Alex、私は2つのものを追加しました。つまり、 'headingView()'(レンダリングされる)と 'adapter'(それは黙って失敗します)です。 –