I\'m looking to write my own ExpandableListAdapter
which operates similarly to ArrayAdapter
. My data model is this:
public class Gr
public class CustomExpandableAdapter extends BaseExpandableListAdapter {
private Context mContext;
private List mData;
private int mSelectedPosition = -1;
public CustomExpandableAdapter(Context context, List data ) {
mData = data;
mContext = context;
}
@Override
public int getGroupCount() {
return mData.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return mData.get(groupPosition).children.size();
}
@Override
public Object getGroup(int groupPosition) {
return mData.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mData.get(groupPosition).children.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
HeaderViewHolder headerViewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.faq_header_text_layout, null);
headerViewHolder = new HeaderViewHolder(convertView);
convertView.setTag(headerViewHolder);
}
headerViewHolder = (HeaderViewHolder) convertView.getTag();
headerViewHolder.mGroupHeader.setText(mData.get(groupPosition).name);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolder childViewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.faq_textview_layout, null);
childViewHolder = new ChildViewHolder(convertView);
convertView.setTag(childViewHolder);
}
childViewHolder = (ChildViewHolder) convertView.getTag();
childViewHolder.mChildTitle.setText(mData.get(groupPosition).children.get(childPosition));
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
private static class HeaderViewHolder {
final TextView mGroupHeader;
private HeaderViewHolder(View group) {
mGroupHeader = (TextView) group.findViewById(R.id.txv_faq_header_text_layout);
}
}
private static class ChildViewHolder {
final TextView mChildTitle;
private ChildViewHolder(View group) {
mChildTitle = (TextView) group.findViewById(R.id.txv_faq_textview_layout);
}
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
if (observer != null) {
super.unregisterDataSetObserver(observer);
}
}
public void setSelectedPosition(int selectedPosition) {
mSelectedPosition = selectedPosition;
}
}