How to write custom ExpandableListAdapter

前端 未结 4 721
梦如初夏
梦如初夏 2020-12-02 19:45

I\'m looking to write my own ExpandableListAdapter which operates similarly to ArrayAdapter. My data model is this:

public class Gr         


        
4条回答
  •  遥遥无期
    2020-12-02 20:02

       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;
            }
        }
    

提交回复
热议问题