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