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
이 수를 검정 고시가 : 이것은 2
을 기대 1
을 반환
Log.i("mergecount", "" + mMergeAdapter.getCount());
.
편집 :이 결과는 headingView()
이 적절한 제목 텍스트와 함께 표시되지만 그 아래에는 목록이 없음을 알 수 있습니다.
어디로 잘못 가고 있습니까?
왜 2를 기대합니까? –
@Alex 두 가지를 추가했기 때문에 - headingView (렌더링 됨)와'adapter' (자동으로 실패 함). –