0

私は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()に適切な見出しのテキストが表示されていて、その下に一覧がないということです。

どこが間違っていますか?

+0

なぜ2を期待していますか? –

+0

@Alex、私は2つのものを追加しました。つまり、 'headingView()'(レンダリングされる)と 'adapter'(それは黙って失敗します)です。 –

答えて

1

私ArrayAdapterは、それはOKらしい使用

に適しています。

私が正しく

それを追加していた場合にはOKらしいです。

私はすべてのことをやっている場合は明らかに、任意の病気を持っていない

をすべてを配線する必要があります。

私は二つのことを追加したので - (レンダリングされます)headingView()とアダプタ(黙って失敗した)

getCount()は、あなたのListViewにする必要があり、総行数を返しませんMergeAdapterに追加されたものの数あなたの場合、あなたは病気がないように見えます。

を無視して、PartnerDiseaseListAdapterを直接ListViewに入れて開始してください。それを働かせてください。次に、MergeAdapterに切り替えます。

+0

ありがとうございます。問題はリストでした。私の愚かなことは確認しないでください。あなたの 'MergeAdapter'に追加されたビュー+アダプターの数を得るためのメソッドがありますか、それは一般的に有用ではないものでしょうか? –

+0

@ jshin47:必要がないと聞いたことがないので、追加された部分のアカウントを取得する方法はありません。具体的なシナリオがある場合は、プロジェクトに問題を提出してください。追加するのは簡単ですが、私は希薄なAPIを保つのが好きです。 – CommonsWare