Android ExpandableListViewAdapter 的构建

控件PullToRefreshExpandableListView  和  控件ExpandableListView  用的是同一个适配器BaseExpandableListAdapter

那么就好办了,自定义一个类 去继承系统的 BaseExpandableListAdapter 适配器,去重写里面的方法:



public class OrderAdapter extends BaseExpandableListAdapter {
    
    
    private ArrayList<OrderListGroup> orderListGroups;
    
    public OrderAdapter(ArrayList<OrderListGroup> orderListGroups) {
        this.orderListGroups = orderListGroups;
 }

    @Override
    public int getGroupCount() {
        //父布局长度
        return orderListGroups.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
       //每个父布局当中子布局的长度
       return orderListGroups.get(groupPosition).getOrderListChilds().size();
    }

    @Override
    public Object getGroup(int groupPosition) {
       //获取每一条父布局
       return orderListGroups.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
       //从每一条父布局中获取每一条子布局
       return orderListGroups.get(groupPosition).getOrderListChilds().get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
       //父布局当前ID
       return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
       //父布局当前ID
  return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { //展示父布局
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_order_group,null);
return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
       //展示子布局
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_order_child,null);
return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; }

其中要注意hasStableIds() 和isChildSelectable(int groupPosition, int childPosition)这两个方法。hasStableIds() 主要是用来判断ExpandableListView内容id是否有效的(返回true or false),系统会跟据id来确定当前显示哪条内容,也就是firstVisibleChild的位置。而 isChildSelectable(int groupPosition, int childPosition)用来判断某Group某个child是否可可选。我们可以添加条件控制某Group某个child可点或不可点击。当不加任何条件直接返回false,所有的组的child均不可点击。


在这之前,首先就要准备好数据。所以建了个构造方法用来接收数据

private ArrayList<OrderListGroup> orderListGroups;

public OrderAdapter(ArrayList<OrderListGroup> orderListGroups) {
    this.orderListGroups = orderListGroups;
}

Apadter 适配器优化和 ListView 优化一样。

适配器建好之后,和控件PullToRefreshExpandableListView  或  控件ExpandableListView  相结合使用

控件PullToRefreshExpandableListView 的使用说明:http://blog.csdn.net/shiyangkai/article/details/72470098






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值