实现效果: 类似于QQ联系人列表

Android_ExpandableListView_第1张图片

 

 Android_ExpandableListView_第2张图片

 

 

相关属性:

  • android:childDivider:指定各组内子类表项之间的分隔条,图片不会完全显示, 分离子列表项的是一条直线
  • android:childIndicator:显示在子列表旁边的Drawable对象,可以是一个图像
  • android:childIndicatorEnd:子列表项指示符的结束约束位置
  • android:childIndicatorLeft:子列表项指示符的左边约束位置
  • android:childIndicatorRight:子列表项指示符的右边约束位置
  • android:childIndicatorStart:子列表项指示符的开始约束位置
  • android:groupIndicator:显示在组列表旁边的Drawable对象,可以是一个图像
  • android:indicatorEnd:组列表项指示器的结束约束位置
  • android:indicatorLeft:组列表项指示器的左边约束位置
  • android:indicatorRight:组列表项指示器的右边约束位置
  • android:indicatorStart:组列表项指示器的开始约束位置

核心是重写BaseExpandableListAdpter

layout_item.xml

<?xml version="1.0" encoding="utf-8"?>        

item_group.xml

<?xml version="1.0" encoding="utf-8"?>    

mainActivity.xml

<?xml version="1.0" encoding="utf-8"?>    

  

MyBaseExpandableListAdapter

package com.example.myapplication5.ExpandableView;import android.content.ClipData;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.myapplication5.R;import java.security.acl.Group;import java.util.ArrayList;public class MyBaseExpandableListAdapter extends BaseExpandableListAdapter {    private ArrayList gData;    private ArrayList> iData;    private Context mContext;    public MyBaseExpandableListAdapter(ArrayList gData, ArrayList> iData,Context mContext){        this.gData=gData;        this.iData=iData;        this.mContext=mContext;    }    @Override    public int getGroupCount() {        return gData.size();    }    @Override    public int getChildrenCount(int groupPosition) {        return iData.get(groupPosition).size();    }    @Override    public Object getGroup(int groupPosition) {        return gData.get(groupPosition);    }    @Override    public Object getChild(int groupPosition, int childPosition) {        return iData.get(groupPosition).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 false;    }    @Override    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {        ViewHolderGroup viewHolderGroup;        if (convertView==null){            convertView= LayoutInflater.from(mContext).inflate(R.layout.layout_item_expanda_group,parent,false);            viewHolderGroup=new ViewHolderGroup();            viewHolderGroup.tv_g_name=convertView.findViewById(R.id.tv_group);            convertView.setTag(viewHolderGroup);        }else {            viewHolderGroup= (ViewHolderGroup) convertView.getTag();        }        viewHolderGroup.tv_g_name.setText(gData.get(groupPosition));        return convertView;    }    @Override    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {       ViewHolderItem viewHolderItem;       if (convertView==null){           convertView=LayoutInflater.from(mContext).inflate(R.layout.layout_item_expanda_item,parent,false);           viewHolderItem=new ViewHolderItem();           viewHolderItem.tv_it_name=convertView.findViewById(R.id.item_tv);           viewHolderItem.iv_it_head=convertView.findViewById(R.id.item_iv);           convertView.setTag(viewHolderItem);       }else {           viewHolderItem= (ViewHolderItem) convertView.getTag();       }       String[] strings=iData.get(groupPosition).get(childPosition);       viewHolderItem.tv_it_name.setText(strings[0]);        viewHolderItem.iv_it_head.setImageResource(Integer.parseInt(strings[1]));        return convertView;    }    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        return true;    }    private static class ViewHolderGroup{        private TextView tv_g_name;    }    private static class ViewHolderItem{        private TextView tv_it_name;        private ImageView iv_it_head;    }}

  MainActivity

package com.example.myapplication5.ExpandableView;import androidx.appcompat.app.AppCompatActivity;import android.content.ClipData;import android.content.Context;import android.os.Bundle;import android.widget.ExpandableListView;import com.example.myapplication5.R;import java.security.acl.Group;import java.util.ArrayList;public class ExpandableViewActivity extends AppCompatActivity {    private ArrayList gData=null;    private ArrayList> iData=null;    private ArrayList ldata=null;    private Context mcontext;    private ExpandableListView expandableListView;    private MyBaseExpandableListAdapter myAdapter = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_expandable_view);        expandableListView=findViewById(R.id.expad_view);        gData=new ArrayList();        iData=new ArrayList>();        ldata=new ArrayList();        gData.add("康师傅");        gData.add("今麦郎");        gData.add("上品");        ldata.add(new String[]{"红烧牛肉面",(""+R.drawable.sor)});        ldata.add(new String[]{"老坛酸菜牛肉面",(""+R.drawable.sor)});        iData.add(ldata);        ldata=new ArrayList<>();        ldata.add(new String[]{"西红柿鸡蛋打卤面",(""+R.drawable.sor)});        ldata.add(new String[]{"酸豆角牛肉面",(""+R.drawable.sor)});        iData.add(ldata);        ldata=new ArrayList<>();        ldata.add(new String[]{"香辣牛肉面",""+R.drawable.sor});        iData.add(ldata);        myAdapter=new MyBaseExpandableListAdapter(gData,iData,getApplicationContext());        expandableListView.setAdapter(myAdapter);    }}

  

更多相关文章

  1. Android:控件Spinner实现下拉列表
  2. Android中的树状(tree)列表
  3. Android Spinner列表选择框的应用
  4. 更改.android目录位置
  5. 《Android 复杂的列表视图新写法 MultiType》知识点整理
  6. Android使用RecyclerView实现列表功能
  7. 无废话Android之smartimageview使用、android多线程下载、显式意
  8. 在控件的任意位置显示图片
  9. Android中使用listview实现qq/微信好友列表

随机推荐

  1. android EditText inputType 中文解说
  2. android xml属性大全
  3. android 4.0中的Fragment
  4. Android:EditText 所有属性
  5. Android中xml布局 详解
  6. Android 控件view的可见,不可见,隐藏的设
  7. Android知识梳理之Service整理
  8. android中点击事件的4种写法
  9. android:screenorientation
  10. android代码库之textview跑马灯效果