ExpandableListView二级下拉的用法及Adapter

package com.avicsafety.safety_examine.Fragement;


import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ImageButton;
import android.widget.Toast;

import com.avicsafety.lib.tools.DialogCreator;
import com.avicsafety.safety_examine.R;
import com.avicsafety.safety_examine.adapter.CheckAdapter;

import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.ViewInject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2017/4/10.
 */
@ContentView(R.layout.fragment_defectscheck)
public class NewCheckDetailFragment  extends BaseFragment{

    private List<String> group_head;                    //组列表项,每个组都有一个子List
    private List<List<String>> child;//子列表项
    private ImageButton add_checkitem;


    @Override
    protected void InitializeComponent() {
        super.InitializeComponent();
        //获取控件
        //初始化组、子列表项
        group_head = new ArrayList<String>();
        child = new ArrayList<List<String>>();

        exp_listview.setAdapter(new CheckAdapter(getActivity(), group_head, child)); //设置数据适配器
        add_checkitem= (ImageButton) getActivity().findViewById(R.id.add_checkitem);
        if (add_checkitem.getVisibility() == View.GONE) {
            add_checkitem.setVisibility(View.VISIBLE);
        }
    }

    @Override
    protected void InitializeData() {
        super.InitializeData();


            addGroup("缺陷检查项一");
            addGroup("缺陷检查项二");
            addGroup("缺陷检查项三");
            addChild(0, "检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1v检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1检查项一:1");
            addChild(0, "检查项一:2");
            addChild(1, "检查项二:1");
            addChild(1, "检查项二:2");
            addChild(2, "检查项三:1");
            addChild(2, "检查项三:2");

    }

    @Override
    protected void InitializeEvent() {
        super.InitializeEvent();

        add_checkitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String [] keys = {"缺陷检查","隐患检查","自定义检查"};
                String [] values = {"0","1","2"};
                DialogCreator.singleChoiceDailog(oThis, keys, new DialogCreator.OnSelectionChangedListener() {
                    @Override
                    public void onChanged(String key, String value,int index) {
                        if (value.equals("0")){
                             Toast.makeText(oThis,key,Toast.LENGTH_SHORT).show();
                        }else if (value.equals("1")){
                            Toast.makeText(oThis,key,Toast.LENGTH_SHORT).show();
                        }else if (value.equals("2")){
                            Toast.makeText(oThis,key,Toast.LENGTH_SHORT).show();
                        }
                    }
                }, values).show();
            }
        });
    }


    //添加组列表项
    public void addGroup(String group) {
        group_head.add(group);
        child.add(new ArrayList<String>()); //child中添加新数组
    }

    //添加对应组的自列表项
    public void addChild(int position, String child) {
        List<String> it = this.child.get(position);
        if (it != null) {
            it.add(child);
        } else {
            it = new ArrayList<String>();
            it.add(child);
        }
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        add_checkitem.setVisibility(View.VISIBLE);

    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        add_checkitem.setVisibility(View.GONE);
    }

    //子列表项被选中的响应方法
    public void childSelect(int groupPosition, int childPosition) {
        Toast.makeText(oThis, Integer.toString(groupPosition) + ":" +
                Integer.toString(childPosition), Toast.LENGTH_SHORT).show();
    }

    @ViewInject(R.id.exp_listview)
    private ExpandableListView exp_listview;


}

 

Adapter要继承BaseExpandableListAdapter

 

package com.avicsafety.safety_examine.adapter;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import com.avicsafety.safety_examine.R;

import java.util.ArrayList;
import java.util.List;


/**
 * Created by Administrator on 2017/4/13.
 */

public  class CheckAdapter extends BaseExpandableListAdapter {

   private List<String> group_head;   //组数据
   private List<List<String>> child;  //子数据
   private Context context;

    public CheckAdapter(Context content){
        //初始化组、子列表项
        group_head = new ArrayList<String>();
        child = new ArrayList<List<String>>();
    }

    public CheckAdapter(Context context,List<String> group_head,
                           List<List<String>> child){
        this.context = context;
        //初始化组、子列表项
        this.group_head = group_head;
        this.child = child;
    }

    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return this.group_head.size();
    }

    @Override
    public int getChildrenCount(int position) {
        // TODO Auto-generated method stub
        if(position<0||position>=this.child.size())
            return 0;
        return child.get(position).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        // TODO Auto-generated method stub
        return group_head.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return child.get(childPosition).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        // TODO Auto-generated method stub
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        //获取文本
        String text = group_head.get(groupPosition);
        ViewHolder viewHolder;

        if(convertView ==null){//convert在运行中会重用,如果不为空,则表明不用重新获取
            viewHolder=new ViewHolder();
            LayoutInflater layoutInflater;//使用这个来载入界面
            layoutInflater = LayoutInflater.from(context);
            convertView = layoutInflater.inflate(R.layout.item_defect_parent, null);
            viewHolder.tv_text= (TextView) convertView.findViewById(R.id.defect_parent);

            convertView.setTag(viewHolder);
        }else {
            viewHolder= (ViewHolder) convertView.getTag();
        }
        viewHolder.tv_text.setText(text);
        // TextVi
        // ew tv = (TextView)convertView.findViewById(R.id.defect_parent);
        //tv.setText(text);
        //获取文本控件,并设置值
        return convertView;

       /* if(convertView == null){
            //组列表界面只有一个文本框,直接生成
            convertView = new TextView(context);
            //设定界面,AbsListView:用于实现条目的虚拟列表的基类
            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, 80);
            ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); //文本框放在中央
            convertView.setPadding(150, 0, 0, 0);                               //设置文本里那个下拉的图标远一点
            ((TextView) convertView).setTextSize(20);
            convertView.setLayoutParams(lp);
            Log.d("Group", text);
        }
        ((TextView) convertView).setText(text);
        return convertView;*/
    }

    @Override
    public View getChildView(int groupPosition, int childPosition,
                             boolean isLastChild, View convertView, ViewGroup parent) {
        //子列表控件通过界面文件设计
        ViewHolder viewHolder;
        if(convertView ==null){//convert在运行中会重用,如果不为空,则表明不用重新获取
            viewHolder=new ViewHolder();
            LayoutInflater layoutInflater;//使用这个来载入界面
            layoutInflater = LayoutInflater.from(context);
            convertView = layoutInflater.inflate(R.layout.item_defect_child, null);
            viewHolder.tv_text= (TextView) convertView.findViewById(R.id.defect_child);
            convertView.setTag(viewHolder);
        }else {
            viewHolder= (ViewHolder) convertView.getTag();
        }

       // TextView tv = (TextView)convertView.findViewById(R.id.defect_child);
        String text = child.get(groupPosition).get(childPosition);
        viewHolder.tv_text.setText(text);
        //获取文本控件,并设置值
        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        //调用Activity里的ChildSelect方法
        //context.childSelect(groupPosition,childPosition);
        return true;
    }

    private class ViewHolder{
        TextView tv_text;
    }


}

转载于:https://my.oschina.net/u/3213186/blog/884924

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值