0

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

どこが間違っているのですか?

4

1 に答える 1

1

私のArrayAdapterは使用に適しています

大丈夫そうです。

正しく追加している場合

大丈夫そうです。

すべてを接続するために必要なすべてのことを行っている場合

どうやら病気はないようです。

2つのものを追加したためです-headingView()(レンダリングされます)とアダプター(サイレントに失敗します)

getCount()ListViewに追加されたものの数ではなく、 に含まれる行の合計数を返しますMergeAdapter。あなたの場合、あなたには病気がないように見えます。

yourを無視して、PartnerDiseaseListAdapter直接 your に入れることから始めます。それを機能させます。次に、 に戻ります。ListViewMergeAdapterMergeAdapter

于 2012-04-24T19:38:16.247 に答える