本文实例为大家分享了AndroID仿QQ分组实现二级菜单展示的具体代码,供大家参考,具体内容如下
首先展示下要实现的效果
动态查看请看链接
1.首先要定义item,也就是二级展示的item
child_item.xml
<?xml version="1.0" enCoding="utf-8"?><relativeLayout androID:ID="@+ID/List_frIEnd" xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <com.makeramen.roundedimagevIEw.RoundedImageVIEw xmlns:app="http://schemas.androID.com/apk/res-auto" androID:ID="@+ID/iv" androID:layout_wIDth="60dp" androID:layout_height="60dp" androID:gravity="center_horizontal" androID:src="#000000" app:riv_border_color="#333333" app:riv_border_wIDth="3dip" app:riv_corner_radius="10dip" app:riv_mutate_background="true" app:riv_oval="true" /> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="60dp" androID:layout_toRightOf="@ID/iv" androID:orIEntation="vertical"> <TextVIEw androID:ID="@+ID/frIEndname" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_weight="1" androID:text="好友1" androID:textcolor="#000000" androID:textSize="30dp" /> <TextVIEw androID:ID="@+ID/motto" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_weight="1" androID:text="这是好友1的签名" androID:textcolor="#000000" androID:textSize="20dp" /> </linearLayout></relativeLayout>
效果如下图所示:
2. 其次,设置分组item
groupitem.xml
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_marginBottom="10dp"> <ImageVIEw androID:ID="@+ID/triangle_right" androID:layout_wIDth="20dp" androID:layout_height="40dp" androID:layout_alignParentleft="true" androID:background="@drawable/triangle_right" /> <TextVIEw androID:ID="@+ID/headtext" androID:layout_wIDth="match_parent" androID:layout_height="40dp" androID:layout_toleftOf="@+ID/online_people_num" androID:layout_toRightOf="@+ID/triangle_right" androID:background="#E9E9E9" androID:text="我的好友" androID:textSize="25dp" /> <TextVIEw androID:ID="@+ID/online_people_num" androID:layout_wIDth="60dp" androID:layout_height="40dp" androID:layout_alignParentRight="true" androID:layout_marginRight="10dp" androID:gravity="center_horizontal|center_vertical" androID:text="0/15" androID:textcolor="#000000" /></relativeLayout>
效果下图所示:
3. 创建相应的数据对象
添加分组父菜单Group
Group.class
package com.example.m1.QQGroup;public class Group { private int mGroupImage; private String mGroupname; //分组名 private String mGroupNum; //分组人数 private boolean isDown; public Group(int mGroupImage,String mGroupname,String mGroupNum) { this.mGroupImage = mGroupImage; this.mGroupname = mGroupname; this.mGroupNum = mGroupNum; } public Group() { this.isDown = false; } public voID changeDownStatus(){ isDown = !isDown; } public boolean isDown() { return isDown; } public voID setDown(boolean down) { isDown = down; } public int getmGroupImage() { return mGroupImage; } public voID setmGroupImage(int mGroupImage) { this.mGroupImage = mGroupImage; } public String getmGroupname() { return mGroupname; } public voID setmGroupname(String mGroupname) { this.mGroupname = mGroupname; } public String getmGroupNum() { return mGroupNum; } public voID setmGroupNum(String mGroupNum) { this.mGroupNum = mGroupNum; }}
4. 添加子菜单Item
Item.class
package com.example.m1.QQGroup;public class Item { private String mname;//人名 private String mMotto; //签名 private int mPhoto; //头像 public Item() { } public Item(String mname,String mMotto) { this.mname = mname; this.mMotto = mMotto; } public Item(String mname,String mMotto,int mPhoto) { this.mname = mname; this.mMotto = mMotto; this.mPhoto = mPhoto; } public String getmname() { return mname; } public voID setmname(String mname) { this.mname = mname; } public String getmMotto() { return mMotto; } public voID setmMotto(String mMotto) { this.mMotto = mMotto; } public int getmPhoto() { return mPhoto; } public voID setmPhoto(int mPhoto) { this.mPhoto = mPhoto; }}
5. 添加适配器
MyBaseexpandablelistadapter.class
package com.example.m1.QQGroup;import androID.content.Context;import androID.util.Log;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.m1.R;import java.util.ArrayList;public class MyBaseexpandablelistadapter extends Baseexpandablelistadapter { private ArrayList<Group> gData; //分组 private ArrayList<ArrayList<Item>> IData; //长链表 private Context mContext; public MyBaseexpandablelistadapter(ArrayList<Group> gData,ArrayList<ArrayList<Item>> IData,Context mContext) { this.gData = gData; this.IData = IData; this.mContext = mContext; } @OverrIDe public int getGroupCount() { return gData.size(); } @OverrIDe public int getChildrenCount(int i) { return IData.get(i).size(); } @OverrIDe public Object getGroup(int i) { return gData.get(i); } @OverrIDe public Object getChild(int i,int i1) { return IData.get(i).get(i1); } @OverrIDe public long getGroupID(int i) { return i; } @OverrIDe public long getChildID(int i,int i1) { return i1; } @OverrIDe public boolean hasStableIDs() { return false; } /** * 取得用于显示给定分组的视图,这个方法仅返回分组的试图对象 * @param i * @param b * @param vIEw * @param vIEwGroup * @return */ @OverrIDe public VIEw getGroupVIEw(final int i,boolean b,VIEw vIEw,final VIEwGroup vIEwGroup) { final VIEwHolderGroup groupHolder; if (vIEw == null){ vIEw = LayoutInflater.from(mContext).inflate(R.layout.groupitem,vIEwGroup,false); groupHolder = new VIEwHolderGroup(); groupHolder.mGroupImage = vIEw.findVIEwByID(R.ID.triangle_right); groupHolder.mGroupname = vIEw.findVIEwByID(R.ID.headtext); groupHolder.mGroupNum = vIEw.findVIEwByID(R.ID.online_people_num); vIEw.setTag(groupHolder); }else{ groupHolder = (VIEwHolderGroup) vIEw.getTag(); } //groupHolder.mGroupImage.setimageResource(gData.get(i).getmGroupImage()); Log.d("gData",gData.get(i).getmGroupImage()+""); Log.d("gData",gData.get(i).getmGroupname()+""); groupHolder.mGroupname.setText(gData.get(i).getmGroupname()); groupHolder.mGroupNum.setText(gData.get(i).getmGroupNum()); return vIEw; } @OverrIDe public VIEw getChildVIEw(int i,int i1,VIEwGroup vIEwGroup) { VIEwHolderItem itemHolder; if (vIEw == null){ vIEw = LayoutInflater.from(mContext).inflate(R.layout.child_item,false); itemHolder = new VIEwHolderItem(); itemHolder.mPhoto = vIEw.findVIEwByID(R.ID.iv); itemHolder.mMotto = vIEw.findVIEwByID(R.ID.motto); itemHolder.mname = vIEw.findVIEwByID(R.ID.frIEndname); vIEw.setTag(itemHolder); }else{ itemHolder = (VIEwHolderItem) vIEw.getTag(); } itemHolder.mPhoto.setimageResource(IData.get(i).get(i1).getmPhoto()); itemHolder.mname.setText(IData.get(i).get(i1).getmname()); itemHolder.mMotto.setText(IData.get(i).get(i1).getmMotto()); return vIEw; } /** * 设置子列表是否可以选中 * @param i * @param i1 * @return */ @OverrIDe public boolean isChildSelectable(int i,int i1) { return true; } private static class VIEwHolderGroup{ private ImageVIEw mGroupImage; private TextVIEw mGroupname; //分组名 private TextVIEw mGroupNum; //分组人数 private boolean isDown; public VIEwHolderGroup() { isDown = false; } } private static class VIEwHolderItem{ private TextVIEw mname;//人名 private TextVIEw mMotto; //签名 private ImageVIEw mPhoto; //头像 }}
6. Main5Activity中填充数据
Main5Activity.class
package com.example.m1.QQGroup;import androID.content.Context;import androID.os.Bundle;import androID.support.v7.app.AppCompatActivity;import androID.vIEw.VIEw;import androID.Widget.ExpandableListVIEw;import androID.Widget.Toast;import com.example.m1.R;import java.util.ArrayList;public class Main5Activity extends AppCompatActivity { private ArrayList<Group> gData = null; //存储所有的分组信息 private ArrayList<ArrayList<Item>> IData = null; //每个分组的子信息 private ArrayList<Item> lData = null; private Context mContext; private ExpandableListVIEw mQQList; private MyBaseexpandablelistadapter myAdapter = null; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main5); mContext = Main5Activity.this; mQQList = findVIEwByID(R.ID.QQList); //数据准备 gData = new ArrayList<Group>(); IData = new ArrayList<ArrayList<Item>>(); gData.add(new Group(R.drawable.triangle_right,"小学同学","1/7")); gData.add(new Group(R.drawable.triangle_right,"初中同学","2/7")); gData.add(new Group(R.drawable.triangle_down,"高中同学","3/7")); gData.add(new Group(R.drawable.triangle_right,"大学同学","4/7")); lData =new ArrayList<Item>(); //小学组 lData.add(new Item("朋友1","有志者事竟成",R.drawable.f015)); lData.add(new Item("朋友2",R.drawable.f015)); lData.add(new Item("朋友3",R.drawable.f015)); lData.add(new Item("朋友4",R.drawable.f040)); lData.add(new Item("朋友5",R.drawable.f015)); lData.add(new Item("朋友6",R.drawable.f015)); lData.add(new Item("朋友7",R.drawable.f040)); IData.add(lData); //初中组 lData =new ArrayList<Item>(); lData.add(new Item("朋友1","我爱你,不是说说而已",R.drawable.f040)); lData.add(new Item("朋友4",R.drawable.f015)); lData.add(new Item("朋友5",R.drawable.f040)); lData.add(new Item("朋友6",R.drawable.f040)); IData.add(lData); //高中组 lData =new ArrayList<Item>(); lData.add(new Item("朋友1","为赋新词强说愁",R.drawable.f040)); lData.add(new Item("朋友3",R.drawable.f040)); lData.add(new Item("朋友7",R.drawable.f015)); IData.add(lData); //大学组 lData =new ArrayList<Item>(); lData.add(new Item("朋友1","I love you ",R.drawable.f015)); IData.add(lData); myAdapter = new MyBaseexpandablelistadapter(gData,IData,mContext); mQQList.setAdapter(myAdapter); mQQList.setonChildClickListener(new ExpandableListVIEw.OnChildClickListener() { @OverrIDe public boolean onChildClick(ExpandableListVIEw parent,VIEw v,int groupposition,int childposition,long ID) { Toast.makeText(mContext,"你点击了:" + IData.get(groupposition).get(childposition).getmname(),Toast.LENGTH_SHORT).show(); return true; } }); }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
总结以上是内存溢出为你收集整理的Android仿QQ分组实现二级菜单展示全部内容,希望文章能够帮你解决Android仿QQ分组实现二级菜单展示所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)