Android仿QQ分组实现二级菜单展示

Android仿QQ分组实现二级菜单展示,第1张

概述Android仿QQ分组实现二级菜单展示 本文实例为大家分享了Android仿QQ分组实现二级菜单展示的具体代码,供大家参考,具体内容如下 首先展示下要实现的效果 动态查看请看链接 1.首先要定义item,也就是二级展示的item child_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/list_friend" xmlns:android=&q ...

本文实例为大家分享了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分组实现二级菜单展示所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存