Android 分组列表适配器 MyExpandableAdapter

本文介绍了一种自定义的ExpandableListAdapter实现方法,通过继承BaseExpandableListAdapter并重写相关方法来实现分组和子项的数据展示。文章详细解释了如何加载数据、设置视图以及如何处理分组和子项的视图显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建 MyExpandableAdapter.java



import android.content.Context;
import android.text.Html;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


/**
 * 分组列表适配器
 */
public class MyExpandableAdapter extends BaseExpandableListAdapter {
    Context context;
    JSONArray list;


    public MyExpandableAdapter(Context context, JSONArray list) {
        this.context = context;
        this.list = list;
    }


    @Override
    public int getGroupCount() {
        return list.size();
    }


    @Override
    public int getChildrenCount(int groupPosition) {
        JSONObject object = (JSONObject) list.getJSONObject(groupPosition);
        JSONArray jsonArray = object.getJSONArray("groups");
        return jsonArray.size();
    }


    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
    }


    @Override
    public Object getChild(int groupPosition, int childPosition) {
        JSONObject object = (JSONObject) list.getJSONObject(groupPosition);
        JSONArray jsonArray = object.getJSONArray("groups");
        return jsonArray.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 true;
    }


    //获取分组布局
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupHolder holder;
        if(convertView == null){
            convertView = View.inflate(context, R.layout.item_group, null);
            holder = new GroupHolder(convertView);
            convertView.setTag(holder);
        }else{
            holder = (GroupHolder) convertView.getTag();
        }


        //设置数据
        JSONObject group = (JSONObject) getGroup(groupPosition);
        holder.groupName.setText(group.getString("groupname"));
        return convertView;
    }


    class GroupHolder{
        TextView groupName;
        public GroupHolder(View convertView){
            groupName = (TextView) convertView.findViewById(R.id.group_title);
        }
    }
//获取分组子布局
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildHolder holder;
        if(convertView == null){
            convertView = View.inflate(context, R.layout.itme_layout, null);
            holder = new ChildHolder(convertView);
            convertView.setTag(holder);
        }else{
            holder = (ChildHolder) convertView.getTag();
        }
        //设置数据
        JSONObject object = (JSONObject) getChild(groupPosition,childPosition);


        holder.title.setText(object.getString("title"));
        return convertView;
    }
    class ChildHolder{
        TextView title;
        public ChildHolder(View convertView){
            title = (TextView) convertView.findViewById(R.id.itme_title);
        }
    }
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值