Android沢宇2級リスト

12223 ワード

Androidアプリを開発する際、どうしても2級リストが必要になる場合がありますが、自分のプロジェクトで使っているリストはExpandableListViewです
転送先が明記されている場合:https://mp.csdn.net/postedit/81059332
public class ErAdapter extends BaseExpandableListAdapter {
    List list;

    Context context;

    public ErAdapter(List list, Context context) {
        this.list = list;
        this.context = context;
    }

    //       
    @Override
    public int getGroupCount() {
        return list.size();
    }
    //       
    @Override
    public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getChildren().size();
    }

    //       
    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
    }
    //       
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return list.get(groupPosition).getChildren().get(childPosition);
    }

    //         
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }
    //         
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    //  item    
    @Override
    public boolean hasStableIds() {
        return true;
    }

    //      
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupHolder holder;
        if (convertView == null) {
            convertView= LayoutInflater.from(context).inflate(R.layout.zu,null);
            holder=new GroupHolder();
            holder.name=convertView.findViewById(R.id.name);
            convertView.setTag(holder);
        }else {
            holder= (GroupHolder) convertView.getTag();
        }
        holder.name.setText(list.get(groupPosition).getName());
        return convertView;
    }

    //      
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildHolder holder;
        if (convertView == null) {
            convertView= LayoutInflater.from(context).inflate(R.layout.lie,null);
            holder=new ChildHolder();
            holder.name=convertView.findViewById(R.id.name);
            holder.time=convertView.findViewById(R.id.time);
            holder.size=convertView.findViewById(R.id.size);
            convertView.setTag(holder);
        }else {
            holder= (ChildHolder) convertView.getTag();
        }
        holder.name.setText(list.get(groupPosition).getChildren().get(childPosition).getName());
        int partDuration = list.get(groupPosition).getChildren().get(childPosition).getPartDuration();
        int time = partDuration / 60;
        holder.time.setText(time+"  ");
        holder.size.setText(list.get(groupPosition).getChildren().get(childPosition).getPartSize()+"M");
        return convertView;
    }

    //            ,            true
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
    class GroupHolder{
        TextView name;
    }
    class ChildHolder{
        TextView name,time,size;
    }
}

二次リストに対応するクリックイベント
ErAdapter erAdapter = new ErAdapter(result, getContext());
ex.setAdapter(erAdapter);
ex.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
    @Override
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
        callBack.listenter(groupPosition, childPosition);
        return true;
    }
});