J'essaie d'utiliser la classe MergeAdapter
de CommonsWare et j'ai un succès limité. En particulier, je ne suis pas sûr si 1) mon ArrayAdapter
est approprié pour l'utilisation, 2) si je l'ajoute correctement, et 3) si je fais tout ce qui est nécessaire pour tout câbler.Est-ce que ArrayAdapter est utilisable avec CommonsWare MergeAdapter? Si oui, pourquoi cela ne fonctionne-t-il pas?
Voici ma sous-classe de 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;
}
}
Voici mon objet StructuredSubDisease
(le nom n'a pas de sens si l'on considère en réalité il est un objet de niveau supérieur contenant des sous maladies, mais peu importe):
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;
}
}
... et c'est là que la "magie" est supposée se produire.
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
}
Je Log
Ged le comte:
Log.i("mergecount", "" + mMergeAdapter.getCount());
Ce retour 1
, où je me attends 2
.
EDIT: J'ai oublié de mentionner, le résultat est que le headingView()
est affiché avec le bon titre, mais il n'y a pas de liste en dessous.
Où est-ce que je me trompe?
Pourquoi attendez-vous 2? –
@Alex, parce que j'ai ajouté deux choses - le 'headingView()' (qui est rendu) et le 'adapter' (qui échoue silencieusement). –